diff options
author | Joachim Tingvold <joachim@tingvold.com> | 2015-04-01 03:42:56 +0200 |
---|---|---|
committer | root <root@einstein.tg15.gathering.org> | 2015-04-01 03:42:56 +0200 |
commit | 14e0453b2e74e7a93a092a2cfec46dabbcd2ab65 (patch) | |
tree | cae83c79299f8bcaf1226f650321c2a0502ae0e4 | |
parent | 132fc7e577c591caa290b3d7f44700ef77f2b3f7 (diff) |
Changes for streampage for TG15
24 files changed, 228 insertions, 2690 deletions
diff --git a/web/stream.gathering.org/event.vlc b/web/stream.gathering.org/event.vlc new file mode 100644 index 0000000..a1c2780 --- /dev/null +++ b/web/stream.gathering.org/event.vlc @@ -0,0 +1,3 @@ +#EXTM3U +#EXTINF:-1,TG15 Unicasted Event HD (720p50 H.264) 6Mbit/s +http://cubemap.tg15.gathering.org/event.ts diff --git a/web/stream.gathering.org/pre-tg15/stream.pl b/web/stream.gathering.org/generate_vlc.pl index 9415389..4d14ebe 100755 --- a/web/stream.gathering.org/pre-tg15/stream.pl +++ b/web/stream.gathering.org/generate_vlc.pl @@ -1,87 +1,88 @@ -#!/usr/bin/perl -I /srv/streamlib - -use warnings; -use strict; - -use stream; -use stream::config; -use CGI; -my $client = CGI->new; - -my $stream = $client->param('stream'); -my $interlaced = $client->param('interlaced'); -my $delivery = $client->param('delivery'); - -my $v4net = $stream::config::v4net; -my $v6net = $stream::config::v6net; -my $multicast_ip = $stream::config::multicast; -my $tg = $stream::config::tg; -my $base_url = $stream::config::vlc_base_host; -my %streams = %stream::config::streams; - - - -#default -if (not defined $delivery) { - $delivery = "multicast"; -} - -if((not defined $stream) or (not defined $delivery)) { - print $client->header(); - die "No stream and/or delivery method, robots unhappy :/\n"; -} - -my $url = ""; -my $port_del = ""; -my $port_str = ""; -my $extinf = ""; -my $url_path = ""; - -my $clip = $client->remote_addr(); - -if (exists($streams{$stream})) { - my $is_multicast = 0; - # add force is_ip_local in check? - $is_multicast = 1 if (exists($streams{$stream}->{has_multicast}) && $delivery eq "multicast"); - - if ($is_multicast) { - $port_del = 20; - $extinf .= "Multicasted"; - $url = $streams{$stream}->{multicast_ip}; - } else { - #$port_del = 80; - $extinf .= "Unicasted"; - $url = $base_url; - $url_path = $streams{$stream}->{url}; - } - - $port_del = $streams{$stream}->{preport} if (defined($streams{$stream}->{preport})); - $port_str = $streams{$stream}->{port}; - $extinf .= " $streams{$stream}->{title}"; - -} else { - &error("No stream and/or delivery method, robots unhappy :-/"); -} - -#print out new file -print $client->header(-type => "application/vlc", - "-Content-disposition" => "attachment; filename=tg-".$delivery."-".$stream.".vlc" -); - -print "#EXTM3U\n"; -print "#EXTINF:-1,TG$tg $extinf\n"; -if(defined $interlaced && $interlaced == 1) { - print "#EXTVLCOPT:deinterlace=1\n"; - print "#EXTVLCOPT:deinterlace-mode=linear\n"; -} -if ($port_str == 80) { - print "$url$url_path\n"; -} else { - print "$url:$port_del$port_str$url_path\n"; -} - -sub error($) { - my $message = shift; - print $client->header(); - die($message."\n"); -} +#!/usr/bin/perl -I /srv/streamlib
+
+use warnings;
+use strict;
+
+use stream;
+use stream::config;
+use CGI;
+my $client = CGI->new;
+
+my $stream = $client->param('stream');
+my $interlaced = $client->param('interlaced');
+my $delivery = $client->param('delivery');
+
+my $v4net = $stream::config::v4net;
+my $v6net = $stream::config::v6net;
+my $multicast_ip = $stream::config::multicast;
+my $tg = $stream::config::tg;
+my $base_url = $stream::config::vlc_base_host;
+my %streams = %stream::config::streams;
+
+
+
+#default
+if (not defined $delivery) {
+ $delivery = "multicast";
+}
+
+if((not defined $stream) or (not defined $delivery)) {
+ print $client->header();
+ die "No stream and/or delivery method, robots unhappy :/\n";
+}
+
+my $url = "";
+my $port_del = "";
+my $port_str = "";
+my $extinf = "";
+my $url_path = "";
+
+my $clip = $client->remote_addr();
+
+if (exists($streams{$stream})) {
+ my $is_multicast = 0;
+ # add force is_ip_local in check?
+ $is_multicast = 1 if (exists($streams{$stream}->{has_multicast}) && $delivery eq "multicast");
+
+ if ($is_multicast) {
+ $port_del = 20;
+ $extinf .= "Multicasted";
+ $url = $streams{$stream}->{multicast_ip};
+ } else {
+ #$port_del = 80;
+ $extinf .= "Unicasted";
+ $url = $base_url;
+ $url_path = $streams{$stream}->{url};
+ $url_path =~ s/.flv/.ts/;
+ }
+
+ $port_del = $streams{$stream}->{preport} if (defined($streams{$stream}->{preport}));
+ $port_str = $streams{$stream}->{port};
+ $extinf .= " $streams{$stream}->{title}";
+
+} else {
+ &error("No stream and/or delivery method, robots unhappy :-/");
+}
+
+#print out new file
+print $client->header(-type => "application/vlc",
+ "-Content-disposition" => "attachment; filename=tg-".$delivery."-".$stream.".vlc"
+);
+
+print "#EXTM3U\n";
+print "#EXTINF:-1,TG$tg $extinf\n";
+if(defined $interlaced && $interlaced == 1) {
+ print "#EXTVLCOPT:deinterlace=1\n";
+ print "#EXTVLCOPT:deinterlace-mode=linear\n";
+}
+if ($port_str == 80) {
+ print "$url$url_path\n";
+} else {
+ print "$url:$port_del$port_str$url_path\n";
+}
+
+sub error($) {
+ my $message = shift;
+ print $client->header();
+ die($message."\n");
+}
diff --git a/web/stream.gathering.org/index.pl b/web/stream.gathering.org/index.pl index 3eabd7a..fda33c3 100755 --- a/web/stream.gathering.org/index.pl +++ b/web/stream.gathering.org/index.pl @@ -60,28 +60,20 @@ sub loop_webcams() { my @s = (); foreach my $name (sort { $streams{$a}->{priority} <=> $streams{$b}->{priority} } keys %streams) { if ($streams{$name}->{type} eq $_[0] && $streams{$name}->{online}) { - my $title_link = "http://stream.tg$tg.gathering.org/stream.pl?delivery=%s&stream=${name}&interlaced=%s"; - my $multicast_link = $streams{$name}->{has_multicast} ? "multicast" : "unicast"; - $multicast_link = "unicast" if ($force_unicast == 1 || not $is_local); + my $vlc_url = "http://stream.tg$tg.gathering.org/generate_vlc.pl?delivery=%s&stream=${name}&interlaced=%s"; + my $multicast = $streams{$name}->{has_multicast} ? "multicast" : "unicast"; + $multicast = "unicast" if ($force_unicast == 1 || not $is_local); + + my $vlc_link = sprintf($vlc_url, $multicast, $streams{$name}->{interlaced}); + my $href_link = '<a class="stream-link-content" href="#" onclick="swapVideo(\'' . $streams{$name}->{url} . '\');">'; - if ($streams{$name}->{external}) { - $title_link = $streams{$name}->{url}; - } else { - $title_link = sprintf($title_link, $multicast_link, $streams{$name}->{interlaced}); - } my %hash = ( - 'title_link' => $title_link, + 'href' => $href_link, 'title' => $streams{$name}->{title}, 'quality' => $streams{$name}->{quality}, 'type' => $streams{$name}->{type}, + 'vlc_link' => $vlc_link, ); - if ($multicast_link eq "multicast") { - $hash{'is_multicast'} .= 1; - my $unicast_link = $title_link; - $unicast_link=~s/multicast/unicast/g; - $hash{'unicast_link'} .= $unicast_link; - } - $hash{'description'} .= $streams{$name}->{description} if exists($streams{$name}->{description}); push(@s, \%hash); } } diff --git a/web/stream.gathering.org/index.tmpl b/web/stream.gathering.org/index.tmpl index c834da9..e1e6a2f 100644 --- a/web/stream.gathering.org/index.tmpl +++ b/web/stream.gathering.org/index.tmpl @@ -38,14 +38,36 @@ window.location = '/?url=' + window.btoa(url);
}
- function float() {
- $("#floater").animate({top: '-=20px'}, "slow");
- $("#floater").animate({top: '+=20px'}, "slow");
- float();
+ var _float = true;
+
+ function animateFloat() {
+ if(_float) {
+ $("#floater").animate({top: '-=20px'}, "slow");
+ $("#floater").animate({top: '+=20px'}, "slow", animateFloat);
+ }
+ }
+
+ function toggleAnimation() {
+ $('#bubble').stop().fadeOut( 400 );
+ if(_float) {
+ _float = false;
+ $("#floater").delay(800).animate({top: '172px'}, "slow");
+ } else {
+ _float = true;
+ animateFloat();
+ }
}
$(document).ready(function() {
- float();
+ $("#floater").click(function() {
+ toggleAnimation();
+ });
+ $("#bubble").click(function() {
+ toggleAnimation();
+ });
+
+ //animateFloat();
+ //$( "#bubble" ).delay( 5000 ).fadeOut( 400 );
});
</script>
@@ -59,6 +81,17 @@ background-image: url('/resources/images/pixel-white.png');
background-size: cover;
}
+
+ #bubble {
+ position: absolute;
+ visibility: hidden;
+ top: 62px;
+ right: 170px;
+ width: 200px;
+ height: 25px;
+ color: #000000;
+ cursor: pointer;
+ }
</style>
</head>
@@ -67,7 +100,12 @@ <h1>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</h1>
</div>
<div id="floater">
-
+
+ </div>
+ <div id="bubble">
+ <div class="bubble">
+ If you hate me, click me!
+ </div>
</div>
<div class="section">
<div class="container">
@@ -94,8 +132,9 @@ <TMPL_LOOP NAME="STREAMS">
<div class="stream-item">
<img class="stream-icon" src="img/icon_<TMPL_VAR NAME=QUALITY>.png" />
+ <a href="<TMPL_VAR NAME=VLC_LINK>"><img class="stream-icon" src="/resources/images/vlc.png" /></a>
<img class="stream-icon" src="img/icon_<TMPL_VAR NAME=TYPE>.png" />
- <a class="stream-link-content" href="<TMPL_VAR NAME=TITLE_LINK>"><TMPL_VAR NAME=TITLE></a>
+ <TMPL_VAR NAME=HREF><TMPL_VAR NAME=TITLE></a>
</div>
</TMPL_LOOP>
@@ -104,8 +143,9 @@ <TMPL_LOOP NAME="CAMSTREAMS">
<div class="stream-item">
<img class="stream-icon" src="img/icon_<TMPL_VAR NAME=QUALITY>.png" />
+ <a href="<TMPL_VAR NAME=VLC_LINK>"><img class="stream-icon" src="/resources/images/vlc.png" /></a>
<img class="stream-icon" src="img/icon_<TMPL_VAR NAME=TYPE>.png" />
- <a class="stream-link-content" href="#" onclick="swapVideo('<TMPL_VAR NAME=TITLE_LINK>');"><TMPL_VAR NAME=TITLE></a>
+ <TMPL_VAR NAME=HREF><TMPL_VAR NAME=TITLE></a>
</div>
</TMPL_LOOP>
</div>
diff --git a/web/stream.gathering.org/noccam.vlc b/web/stream.gathering.org/noccam.vlc new file mode 100644 index 0000000..e1bbf42 --- /dev/null +++ b/web/stream.gathering.org/noccam.vlc @@ -0,0 +1,3 @@ +#EXTM3U +#EXTINF:-1,TG15 Unicasted NOC Webcam HD (720p H.264) 3Mbit/s +http://cubemap.tg15.gathering.org/noccam.flv diff --git a/web/stream.gathering.org/pre-tg15/fix_count.pl b/web/stream.gathering.org/pre-tg15/fix_count.pl deleted file mode 100755 index aaaf42e..0000000 --- a/web/stream.gathering.org/pre-tg15/fix_count.pl +++ /dev/null @@ -1,31 +0,0 @@ -#! /usr/bin/perl - -my $lines = {}; - -open LOG, "<", "/home/techserver/count_datacube.log" - or die "count_datacube.log: $!"; - -while (<LOG>) { - chomp; - my ($date, $port, $proto, $audience, $count) = split /\s+/; - my $key = $port . ' ' . $proto . ' ' . $audience; - $lines->{$date}{$key} = $count; -} - -close LOG; - -my $last_date = undef; -for my $date (sort keys %$lines) { - for my $key (keys %{$lines->{$date}}) { - if (defined($last_date) && !exists($lines->{$last_date}{$key})) { - $lines->{$last_date}{$key} = $lines->{$date}{$key}; - } - } - $last_date = $date; -} - -for my $date (sort keys %$lines) { - for my $key (sort keys %{$lines->{$date}}) { - print "$date $key " . $lines->{$date}{$key} . "\n"; - } -} diff --git a/web/stream.gathering.org/pre-tg15/ios/PLACEHOLDER b/web/stream.gathering.org/pre-tg15/ios/PLACEHOLDER deleted file mode 100644 index e69de29..0000000 --- a/web/stream.gathering.org/pre-tg15/ios/PLACEHOLDER +++ /dev/null diff --git a/web/stream.gathering.org/pre-tg15/ios/event.m3u8 b/web/stream.gathering.org/pre-tg15/ios/event.m3u8 deleted file mode 100644 index 11152d3..0000000 --- a/web/stream.gathering.org/pre-tg15/ios/event.m3u8 +++ /dev/null @@ -1,16 +0,0 @@ -#EXTM3U -#EXT-X-TARGETDURATION:5 -#EXT-X-VERSION:3 -#EXT-X-ALLOW-CACHE:NO -#EXT-X-MEDIA-SEQUENCE:27432 -#EXTINF:4.97, -http://stream.tg13.gathering.org/ios/event-00027432.ts -#EXTINF:4.04, -http://stream.tg13.gathering.org/ios/event-00027433.ts -#EXTINF:3.99, -http://stream.tg13.gathering.org/ios/event-00027434.ts -#EXTINF:3.97, -http://stream.tg13.gathering.org/ios/event-00027435.ts -#EXTINF:3.74, -http://stream.tg13.gathering.org/ios/event-00027436.ts -#EXT-X-ENDLIST diff --git a/web/stream.gathering.org/pre-tg15/ios/stream.m3u8 b/web/stream.gathering.org/pre-tg15/ios/stream.m3u8 deleted file mode 100644 index d3d46a6..0000000 --- a/web/stream.gathering.org/pre-tg15/ios/stream.m3u8 +++ /dev/null @@ -1,8 +0,0 @@ -#EXTM3U -#EXT-X-TARGETDURATION:5 -#EXT-X-VERSION:3 -#EXT-X-ALLOW-CACHE:NO -#EXT-X-MEDIA-SEQUENCE:1 -#EXTINF:3.84, -http://stream.tg13.gathering.org/ios/stream-00000001.ts -#EXT-X-ENDLIST diff --git a/web/stream.gathering.org/pre-tg15/jwplayer.js b/web/stream.gathering.org/pre-tg15/jwplayer.js deleted file mode 100644 index 41ade50..0000000 --- a/web/stream.gathering.org/pre-tg15/jwplayer.js +++ /dev/null @@ -1 +0,0 @@ -var jwplayer=function(a){if(jwplayer.api){return jwplayer.api.selectPlayer(a)}};var $jw=jwplayer;jwplayer.version="5.5.1641";jwplayer.vid=document.createElement("video");jwplayer.audio=document.createElement("audio");jwplayer.source=document.createElement("source");(function(b){b.utils=function(){};b.utils.typeOf=function(d){var c=typeof d;if(c==="object"){if(d){if(d instanceof Array){c="array"}}else{c="null"}}return c};b.utils.extend=function(){var c=b.utils.extend["arguments"];if(c.length>1){for(var e=1;e<c.length;e++){for(var d in c[e]){c[0][d]=c[e][d]}}return c[0]}return null};b.utils.clone=function(f){var c;var d=b.utils.clone["arguments"];if(d.length==1){switch(b.utils.typeOf(d[0])){case"object":c={};for(var e in d[0]){c[e]=b.utils.clone(d[0][e])}break;case"array":c=[];for(var e in d[0]){c[e]=b.utils.clone(d[0][e])}break;default:return d[0];break}}return c};b.utils.extension=function(c){c=c.substring(c.lastIndexOf("/")+1,c.length);c=c.split("?")[0];if(c.lastIndexOf(".")>-1){return c.substr(c.lastIndexOf(".")+1,c.length).toLowerCase()}return};b.utils.html=function(c,d){c.innerHTML=d};b.utils.wrap=function(c,d){c.parentNode.replaceChild(d,c);d.appendChild(c)};b.utils.ajax=function(f,e,c){var d;if(window.XMLHttpRequest){d=new XMLHttpRequest()}else{d=new ActiveXObject("Microsoft.XMLHTTP")}d.onreadystatechange=function(){if(d.readyState===4){if(d.status===200){if(e){e(d)}}else{if(c){c(f)}}}};d.open("GET",f,true);d.send(null);return d};b.utils.load=function(d,e,c){d.onreadystatechange=function(){if(d.readyState===4){if(d.status===200){if(e){e()}}else{if(c){c()}}}}};b.utils.find=function(d,c){return d.getElementsByTagName(c)};b.utils.append=function(c,d){c.appendChild(d)};b.utils.isIE=function(){return((!+"\v1")||(typeof window.ActiveXObject!="undefined"))};b.utils.isLegacyAndroid=function(){var c=navigator.userAgent.toLowerCase();return(c.match(/android 2.[012]/i)!==null)};b.utils.isIOS=function(){var c=navigator.userAgent.toLowerCase();return(c.match(/iP(hone|ad)/i)!==null)};b.utils.getFirstPlaylistItemFromConfig=function(c){var d={};var e;if(c.playlist&&c.playlist.length){e=c.playlist[0]}else{e=c}d.file=e.file;d.levels=e.levels;d.streamer=e.streamer;d.playlistfile=e.playlistfile;if(d.file&&d.file.toLowerCase().indexOf("youtube.com")>-1){d.provider="youtube"}if(d.streamer&&d.streamer.toLowerCase().indexOf("rtmp://")==0){d.provider="rtmp"}if(e.type){d.provider=e.type.toLowerCase()}else{if(e.provider){d.provider=e.provider.toLowerCase()}}return d};b.utils.getOuterHTML=function(d){if(d.outerHTML){return d.outerHTML}else{var e=d.parentNode;var c=document.createElement(e.tagName);var g=document.createElement(d.tagName);e.replaceChild(g,d);c.appendChild(d);var f=c.innerHTML;e.replaceChild(d,g);return f}};b.utils.setOuterHTML=function(f,e){if(f.outerHTML){f.outerHTML=e}else{var g=document.createElement("div");g.innerHTML=e;var c=document.createRange();c.selectNodeContents(g);var d=c.extractContents();f.parentNode.insertBefore(d,f);f.parentNode.removeChild(f)}};b.utils.hasFlash=function(){return(typeof navigator.plugins!="undefined"&&typeof navigator.plugins["Shockwave Flash"]!="undefined")||(typeof window.ActiveXObject!="undefined")};b.utils.getPluginName=function(c){if(c.lastIndexOf("/")>=0){c=c.substring(c.lastIndexOf("/")+1,c.length)}if(c.lastIndexOf("-")>=0){c=c.substring(0,c.lastIndexOf("-"))}if(c.lastIndexOf(".swf")>=0){c=c.substring(0,c.lastIndexOf(".swf"))}if(c.lastIndexOf(".js")>=0){c=c.substring(0,c.lastIndexOf(".js"))}return c};b.utils.getAbsolutePath=function(j,h){if(h===undefined){h=document.location.href}if(j===undefined){return undefined}if(a(j)){return j}var k=h.substring(0,h.indexOf("://")+3);var g=h.substring(k.length,h.indexOf("/",k.length+1));var d;if(j.indexOf("/")===0){d=j.split("/")}else{var e=h.split("?")[0];e=e.substring(k.length+g.length+1,e.lastIndexOf("/"));d=e.split("/").concat(j.split("/"))}var c=[];for(var f=0;f<d.length;f++){if(!d[f]||d[f]===undefined||d[f]=="."){continue}else{if(d[f]==".."){c.pop()}else{c.push(d[f])}}}return k+g+"/"+c.join("/")};function a(d){if(d===null){return}var e=d.indexOf("://");var c=d.indexOf("?");return(e>0&&(c<0||(c>e)))}b.utils.pluginPathType={ABSOLUTE:"ABSOLUTE",RELATIVE:"RELATIVE",CDN:"CDN"};b.utils.getPluginPathType=function(d){if(typeof d!="string"){return}d=d.split("?")[0];var e=d.indexOf("://");if(e>0){return b.utils.pluginPathType.ABSOLUTE}var c=d.indexOf("/");var f=b.utils.extension(d);if(e<0&&c<0&&(!f||!isNaN(f))){return b.utils.pluginPathType.CDN}return b.utils.pluginPathType.RELATIVE};b.utils.mapEmpty=function(c){for(var d in c){return false}return true};b.utils.mapLength=function(d){var c=0;for(var e in d){c++}return c};b.utils.log=function(d,c){if(typeof console!="undefined"&&typeof console.log!="undefined"){if(c){console.log(d,c)}else{console.log(d)}}};b.utils.css=function(d,g,c){if(d!==undefined){for(var e in g){try{if(typeof g[e]==="undefined"){continue}else{if(typeof g[e]=="number"&&!(e=="zIndex"||e=="opacity")){if(isNaN(g[e])){continue}if(e.match(/color/i)){g[e]="#"+b.utils.strings.pad(g[e].toString(16),6)}else{g[e]=Math.ceil(g[e])+"px"}}}d.style[e]=g[e]}catch(f){}}}};b.utils.isYouTube=function(c){return c.indexOf("youtube.com")>-1};b.utils.getYouTubeId=function(c){c.indexOf("youtube.com">0)};b.utils.transform=function(c,d){c.style.webkitTransform=d;c.style.MozTransform=d;c.style.OTransform=d};b.utils.stretch=function(h,m,l,f,k,g){if(typeof l=="undefined"||typeof f=="undefined"||typeof k=="undefined"||typeof g=="undefined"){return}var d=l/k;var e=f/g;var j=0;var i=0;m.style.overflow="hidden";b.utils.transform(m,"");var c={};switch(h.toUpperCase()){case b.utils.stretching.NONE:c.width=k;c.height=g;break;case b.utils.stretching.UNIFORM:if(d>e){c.width=k*e;c.height=g*e}else{c.width=k*d;c.height=g*d}break;case b.utils.stretching.FILL:if(d>e){c.width=k*d;c.height=g*d}else{c.width=k*e;c.height=g*e}break;case b.utils.stretching.EXACTFIT:b.utils.transform(m,["scale(",d,",",e,")"," translate(0px,0px)"].join(""));c.width=k;c.height=g;break;default:break}c.top=(f-c.height)/2;c.left=(l-c.width)/2;b.utils.css(m,c)};b.utils.stretching={NONE:"NONE",FILL:"FILL",UNIFORM:"UNIFORM",EXACTFIT:"EXACTFIT"}})(jwplayer);(function(a){a.events=function(){};a.events.COMPLETE="COMPLETE";a.events.ERROR="ERROR"})(jwplayer);(function(jwplayer){jwplayer.events.eventdispatcher=function(debug){var _debug=debug;var _listeners;var _globallisteners;this.resetEventListeners=function(){_listeners={};_globallisteners=[]};this.resetEventListeners();this.addEventListener=function(type,listener,count){try{if(_listeners[type]===undefined){_listeners[type]=[]}if(typeof(listener)=="string"){eval("listener = "+listener)}_listeners[type].push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeEventListener=function(type,listener){try{for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){if(_listeners[type][lisenterIndex].toString()==listener.toString()){_listeners[type].slice(lisenterIndex,lisenterIndex+1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.addGlobalListener=function(listener,count){try{if(typeof(listener)=="string"){eval("listener = "+listener)}_globallisteners.push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeGlobalListener=function(listener){try{for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){if(_globallisteners[globalListenerIndex].toString()==listener.toString()){_globallisteners.slice(globalListenerIndex,globalListenerIndex+1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.sendEvent=function(type,data){if(data===undefined){data={}}if(_debug){jwplayer.utils.log(type,data)}if(typeof _listeners[type]!="undefined"){for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){try{_listeners[type][listenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString(),_listeners[type][listenerIndex].listener)}if(_listeners[type][listenerIndex].count===1){delete _listeners[type][listenerIndex]}else{if(_listeners[type][listenerIndex].count>0){_listeners[type][listenerIndex].count=_listeners[type][listenerIndex].count-1}}}}for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){try{_globallisteners[globalListenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString(),_globallisteners[globalListenerIndex].listener)}if(_globallisteners[globalListenerIndex].count===1){delete _globallisteners[globalListenerIndex]}else{if(_globallisteners[globalListenerIndex].count>0){_globallisteners[globalListenerIndex].count=_globallisteners[globalListenerIndex].count-1}}}}}})(jwplayer);(function(a){var b={};a.utils.animations=function(){};a.utils.animations.transform=function(c,d){c.style.webkitTransform=d;c.style.MozTransform=d;c.style.OTransform=d};a.utils.animations.transformOrigin=function(c,d){c.style.webkitTransformOrigin=d;c.style.MozTransformOrigin=d;c.style.OTransformOrigin=d};a.utils.animations.rotate=function(c,d){a.utils.animations.transform(c,["rotate(",d,"deg)"].join(""))};a.utils.cancelAnimation=function(c){delete b[c.id]};a.utils.fadeTo=function(l,f,e,i,h,d){if(b[l.id]!=d&&d!==undefined){return}var c=new Date().getTime();if(d>c){setTimeout(function(){a.utils.fadeTo(l,f,e,i,0,d)},d-c)}l.style.display="block";if(i===undefined){i=l.style.opacity===""?1:l.style.opacity}if(l.style.opacity==f&&l.style.opacity!==""&&d!==undefined){if(f===0){l.style.display="none"}return}if(d===undefined){d=c;b[l.id]=d}if(h===undefined){h=0}var j=(c-d)/(e*1000);j=j>1?1:j;var k=f-i;var g=i+(j*k);if(g>1){g=1}else{if(g<0){g=0}}l.style.opacity=g;if(h>0){b[l.id]=d+h*1000;a.utils.fadeTo(l,f,e,i,0,b[l.id]);return}setTimeout(function(){a.utils.fadeTo(l,f,e,i,0,d)},10)}})(jwplayer);(function(a){a.utils.arrays=function(){};a.utils.arrays.indexOf=function(c,d){for(var b=0;b<c.length;b++){if(c[b]==d){return b}}return -1};a.utils.arrays.remove=function(c,d){var b=a.utils.arrays.indexOf(c,d);if(b>-1){c.splice(b,1)}}})(jwplayer);(function(a){a.utils.extensionmap={"3gp":{html5:"video/3gpp",flash:"video"},"3gpp":{html5:"video/3gpp"},"3g2":{html5:"video/3gpp2",flash:"video"},"3gpp2":{html5:"video/3gpp2"},flv:{flash:"video"},f4a:{html5:"audio/mp4"},f4b:{html5:"audio/mp4",flash:"video"},f4p:{html5:"video/mp4",flash:"video"},f4v:{html5:"video/mp4",flash:"video"},mov:{html5:"video/quicktime",flash:"video"},m4a:{html5:"audio/mp4",flash:"video"},m4b:{html5:"audio/mp4"},m4p:{html5:"audio/mp4"},m4v:{html5:"video/mp4",flash:"video"},mkv:{html5:"video/x-matroska"},mp4:{html5:"video/mp4",flash:"video"},rbs:{flash:"sound"},sdp:{html5:"application/sdp",flash:"video"},vp6:{html5:"video/x-vp6"},aac:{html5:"audio/aac",flash:"video"},mp3:{flash:"sound"},ogg:{html5:"audio/ogg"},ogv:{html5:"video/ogg"},webm:{html5:"video/webm"},m3u8:{html5:"audio/x-mpegurl"},gif:{flash:"image"},jpeg:{flash:"image"},jpg:{flash:"image"},swf:{flash:"image"},png:{flash:"image"}}})(jwplayer);(function(e){e.utils.mediaparser=function(){};var g={element:{width:"width",height:"height",id:"id","class":"className",name:"name"},media:{src:"file",preload:"preload",autoplay:"autostart",loop:"repeat",controls:"controls"},source:{src:"file",type:"type",media:"media","data-jw-width":"width","data-jw-bitrate":"bitrate"},video:{poster:"image"}};var f={};e.utils.mediaparser.parseMedia=function(i){return d(i)};function c(j,i){if(i===undefined){i=g[j]}else{e.utils.extend(i,g[j])}return i}function d(m,i){if(f[m.tagName.toLowerCase()]&&(i===undefined)){return f[m.tagName.toLowerCase()](m)}else{i=c("element",i);var n={};for(var j in i){if(j!="length"){var l=m.getAttribute(j);if(!(l===""||l===undefined||l===null)){n[i[j]]=m.getAttribute(j)}}}var k=m.style["#background-color"];if(k&&!(k=="transparent"||k=="rgba(0, 0, 0, 0)")){n.screencolor=k}return n}}function h(n,k){k=c("media",k);var l=[];var j=e.utils.selectors("source",n);for(var m in j){if(!isNaN(m)){l.push(a(j[m]))}}var o=d(n,k);if(o.file!==undefined){l[0]={file:o.file}}o.levels=l;return o}function a(k,j){j=c("source",j);var i=d(k,j);i.width=i.width?i.width:0;i.bitrate=i.bitrate?i.bitrate:0;return i}function b(k,j){j=c("video",j);var i=h(k,j);return i}f.media=h;f.audio=h;f.source=a;f.video=b})(jwplayer);(function(a){a.utils.loaderstatus={NEW:"NEW",LOADING:"LOADING",ERROR:"ERROR",COMPLETE:"COMPLETE"};a.utils.scriptloader=function(c){var d=a.utils.loaderstatus.NEW;var b=new a.events.eventdispatcher();a.utils.extend(this,b);this.load=function(){if(d==a.utils.loaderstatus.NEW){d=a.utils.loaderstatus.LOADING;var e=document.createElement("script");e.onload=function(f){d=a.utils.loaderstatus.COMPLETE;b.sendEvent(a.events.COMPLETE)};e.onerror=function(f){d=a.utils.loaderstatus.ERROR;b.sendEvent(a.events.ERROR)};e.onreadystatechange=function(){if(e.readyState=="loaded"||e.readyState=="complete"){d=a.utils.loaderstatus.COMPLETE;b.sendEvent(a.events.COMPLETE)}};document.getElementsByTagName("head")[0].appendChild(e);e.src=c}};this.getStatus=function(){return d}}})(jwplayer);(function(a){a.utils.selectors=function(b,d){if(d===undefined){d=document}b=a.utils.strings.trim(b);var c=b.charAt(0);if(c=="#"){return d.getElementById(b.substr(1))}else{if(c=="."){if(d.getElementsByClassName){return d.getElementsByClassName(b.substr(1))}else{return a.utils.selectors.getElementsByTagAndClass("*",b.substr(1))}}else{if(b.indexOf(".")>0){selectors=b.split(".");return a.utils.selectors.getElementsByTagAndClass(selectors[0],selectors[1])}else{return d.getElementsByTagName(b)}}}return null};a.utils.selectors.getElementsByTagAndClass=function(e,h,g){elements=[];if(g===undefined){g=document}var f=g.getElementsByTagName(e);for(var d=0;d<f.length;d++){if(f[d].className!==undefined){var c=f[d].className.split(" ");for(var b=0;b<c.length;b++){if(c[b]==h){elements.push(f[d])}}}}return elements}})(jwplayer);(function(a){a.utils.strings=function(){};a.utils.strings.trim=function(b){return b.replace(/^\s*/,"").replace(/\s*$/,"")};a.utils.strings.pad=function(c,d,b){if(!b){b="0"}while(c.length<d){c=b+c}return c};a.utils.strings.serialize=function(b){if(b==null){return null}else{if(b=="true"){return true}else{if(b=="false"){return false}else{if(isNaN(Number(b))||b.length>5||b.length==0){return b}else{return Number(b)}}}}};a.utils.strings.seconds=function(d){d=d.replace(",",".");var b=d.split(":");var c=0;if(d.substr(-1)=="s"){c=Number(d.substr(0,d.length-1))}else{if(d.substr(-1)=="m"){c=Number(d.substr(0,d.length-1))*60}else{if(d.substr(-1)=="h"){c=Number(d.substr(0,d.length-1))*3600}else{if(b.length>1){c=Number(b[b.length-1]);c+=Number(b[b.length-2])*60;if(b.length==3){c+=Number(b[b.length-3])*3600}}else{c=Number(d)}}}}return c};a.utils.strings.xmlAttribute=function(b,c){for(var d in b.attributes){if(b.attributes[d].name&&b.attributes[d].name.toLowerCase()==c.toLowerCase()){return b.attributes[d].value.toString()}}return""}})(jwplayer);(function(c){var d=new RegExp(/^(#|0x)[0-9a-fA-F]{3,6}/);c.utils.typechecker=function(g,f){f=f===null?b(g):f;return e(g,f)};function b(f){var g=["true","false","t","f"];if(g.toString().indexOf(f.toLowerCase().replace(" ",""))>=0){return"boolean"}else{if(d.test(f)){return"color"}else{if(!isNaN(parseInt(f,10))&&parseInt(f,10).toString().length==f.length){return"integer"}else{if(!isNaN(parseFloat(f))&&parseFloat(f).toString().length==f.length){return"float"}}}}return"string"}function e(g,f){if(f===null){return g}switch(f){case"color":if(g.length>0){return a(g)}return null;case"integer":return parseInt(g,10);case"float":return parseFloat(g);case"boolean":if(g.toLowerCase()=="true"){return true}else{if(g=="1"){return true}}return false}return g}function a(f){switch(f.toLowerCase()){case"blue":return parseInt("0000FF",16);case"green":return parseInt("00FF00",16);case"red":return parseInt("FF0000",16);case"cyan":return parseInt("00FFFF",16);case"magenta":return parseInt("FF00FF",16);case"yellow":return parseInt("FFFF00",16);case"black":return parseInt("000000",16);case"white":return parseInt("FFFFFF",16);default:f=f.replace(/(#|0x)?([0-9A-F]{3,6})$/gi,"$2");if(f.length==3){f=f.charAt(0)+f.charAt(0)+f.charAt(1)+f.charAt(1)+f.charAt(2)+f.charAt(2)}return parseInt(f,16)}return parseInt("000000",16)}})(jwplayer);(function(a){var c={};var b={};a.plugins=function(){};a.plugins.loadPlugins=function(e,d){b[e]=new a.plugins.pluginloader(new a.plugins.model(c),d);return b[e]};a.plugins.registerPlugin=function(g,e,d){if(c[g]){c[g].registerPlugin(g,e,d)}else{a.utils.log("A plugin ("+g+") was registered with the player that was not loaded. Please check your configuration.");for(var f in b){b[f].pluginFailed()}}}})(jwplayer);(function(a){a.plugins.model=function(b){this.addPlugin=function(c){var d=a.utils.getPluginName(c);if(!b[d]){b[d]=new a.plugins.plugin(c)}return b[d]}}})(jwplayer);(function(a){a.plugins.pluginmodes={FLASH:"FLASH",JAVASCRIPT:"JAVASCRIPT",HYBRID:"HYBRID"};a.plugins.plugin=function(b){var d="http://plugins.longtailvideo.com";var i=a.utils.loaderstatus.NEW;var j;var h;var k;var c=new a.events.eventdispatcher();a.utils.extend(this,c);function e(){switch(a.utils.getPluginPathType(b)){case a.utils.pluginPathType.ABSOLUTE:return b;case a.utils.pluginPathType.RELATIVE:return a.utils.getAbsolutePath(b,window.location.href);case a.utils.pluginPathType.CDN:var l=a.utils.getPluginName(b);return d+"/"+a.version.split(".")[0]+"/"+l+"/"+l+".js"}}function g(l){k=setTimeout(function(){i=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE)},1000)}function f(l){i=a.utils.loaderstatus.ERROR;c.sendEvent(a.events.ERROR)}this.load=function(){if(i==a.utils.loaderstatus.NEW){if(b.lastIndexOf(".swf")>0){j=b;i=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE);return}i=a.utils.loaderstatus.LOADING;var l=new a.utils.scriptloader(e());l.addEventListener(a.events.COMPLETE,g);l.addEventListener(a.events.ERROR,f);l.load()}};this.registerPlugin=function(n,m,l){if(k){clearTimeout(k);k=undefined}if(m&&l){j=l;h=m}else{if(typeof m=="string"){j=m}else{if(typeof m=="function"){h=m}else{if(!m&&!l){j=n}}}}i=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE)};this.getStatus=function(){return i};this.getPluginName=function(){return a.utils.getPluginName(b)};this.getFlashPath=function(){if(j){switch(a.utils.getPluginPathType(j)){case a.utils.pluginPathType.ABSOLUTE:return j;case a.utils.pluginPathType.RELATIVE:if(b.lastIndexOf(".swf")>0){return a.utils.getAbsolutePath(j,window.location.href)}return a.utils.getAbsolutePath(j,e());case a.utils.pluginPathType.CDN:if(j.indexOf("-")>-1){return j+"h"}return j+"-h"}}return null};this.getJS=function(){return h};this.getPluginmode=function(){if(typeof j!="undefined"&&typeof h!="undefined"){return a.plugins.pluginmodes.HYBRID}else{if(typeof j!="undefined"){return a.plugins.pluginmodes.FLASH}else{if(typeof h!="undefined"){return a.plugins.pluginmodes.JAVASCRIPT}}}};this.getNewInstance=function(m,l,n){return new h(m,l,n)};this.getURL=function(){return b}}})(jwplayer);(function(a){a.plugins.pluginloader=function(h,e){var g={};var j=a.utils.loaderstatus.NEW;var d=false;var b=false;var c=new a.events.eventdispatcher();a.utils.extend(this,c);function f(){if(!b){b=true;j=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE)}}function i(){if(!b){var k=0;for(plugin in g){if(g[plugin].getStatus()==a.utils.loaderstatus.LOADING){k++}}if(k==0){f()}}}this.setupPlugins=function(m,k,r){var l={length:0,plugins:{}};var o={length:0,plugins:{}};for(var n in g){var p=g[n].getPluginName();if(g[n].getFlashPath()){l.plugins[g[n].getFlashPath()]=k.plugins[n];l.plugins[g[n].getFlashPath()].pluginmode=g[n].getPluginmode();l.length++}if(g[n].getJS()){var q=document.createElement("div");q.id=m.id+"_"+p;q.style.position="absolute";q.style.zIndex=o.length+10;o.plugins[p]=g[n].getNewInstance(m,k.plugins[n],q);o.length++;if(typeof o.plugins[p].resize!="undefined"){m.onReady(r(o.plugins[p],q,true));m.onResize(r(o.plugins[p],q))}}}m.plugins=o.plugins;return l};this.load=function(){j=a.utils.loaderstatus.LOADING;d=true;for(var k in e){g[k]=h.addPlugin(k);g[k].addEventListener(a.events.COMPLETE,i);g[k].addEventListener(a.events.ERROR,i);g[k].load()}d=false;i()};this.pluginFailed=function(){f()};this.getStatus=function(){return j}}})(jwplayer);(function(b){var a=[];b.api=function(d){this.container=d;this.id=d.id;var l={};var q={};var c=[];var h=undefined;var k=false;var i=[];var o=b.utils.getOuterHTML(d);var p={};var m=0;var j={};this.getBuffer=function(){return this.callInternal("jwGetBuffer")};this.getContainer=function(){return this.container};function e(r){return function(w,s,t,u){var v;if(s){j[w]=s;v="jwplayer('"+r+"').callback('"+w+"')"}else{if(!s&&j[w]){delete j[w]}}h.jwDockSetButton(w,v,t,u)}}this.getPlugin=function(s){var r=this.callInternal;if(s=="dock"){return{setButton:e(this.id)}}return this.plugins[s]};this.callback=function(r){if(j[r]){return j[r]()}};this.getDuration=function(){return this.callInternal("jwGetDuration")};this.getFullscreen=function(){return this.callInternal("jwGetFullscreen")};this.getHeight=function(){return this.callInternal("jwGetHeight")};this.getLockState=function(){return this.callInternal("jwGetLockState")};this.getMeta=function(){return this.getItemMeta()};this.getMute=function(){return this.callInternal("jwGetMute")};this.getPlaylist=function(){var s=this.callInternal("jwGetPlaylist");for(var r=0;r<s.length;r++){if(s[r].index===undefined){s[r].index=r}}return s};this.getPlaylistItem=function(r){if(r===undefined){r=this.getCurrentItem()}return this.getPlaylist()[r]};this.getPosition=function(){return this.callInternal("jwGetPosition")};this.getRenderingMode=function(){return this.renderingMode};this.getState=function(){return this.callInternal("jwGetState")};this.getVolume=function(){return this.callInternal("jwGetVolume")};this.getWidth=function(){return this.callInternal("jwGetWidth")};this.setFullscreen=function(r){if(r===undefined){this.callInternal("jwSetFullscreen",!this.callInternal("jwGetFullscreen"))}else{this.callInternal("jwSetFullscreen",r)}return this};this.setMute=function(r){if(r===undefined){this.callInternal("jwSetMute",!this.callInternal("jwGetMute"))}else{this.callInternal("jwSetMute",r)}return this};this.lock=function(){return this};this.unlock=function(){return this};this.load=function(r){this.callInternal("jwLoad",r);return this};this.playlistItem=function(r){this.callInternal("jwPlaylistItem",r);return this};this.playlistPrev=function(){this.callInternal("jwPlaylistPrev");return this};this.playlistNext=function(){this.callInternal("jwPlaylistNext");return this};this.resize=function(s,r){if(this.renderingMode=="html5"){h.jwResize(s,r)}else{this.container.width=s;this.container.height=r}return this};this.play=function(r){if(typeof r=="undefined"){r=this.getState();if(r==b.api.events.state.PLAYING||r==b.api.events.state.BUFFERING){this.callInternal("jwPause")}else{this.callInternal("jwPlay")}}else{this.callInternal("jwPlay",r)}return this};this.pause=function(r){if(typeof r=="undefined"){r=this.getState();if(r==b.api.events.state.PLAYING||r==b.api.events.state.BUFFERING){this.callInternal("jwPause")}else{this.callInternal("jwPlay")}}else{this.callInternal("jwPause",r)}return this};this.stop=function(){this.callInternal("jwStop");return this};this.seek=function(r){this.callInternal("jwSeek",r);return this};this.setVolume=function(r){this.callInternal("jwSetVolume",r);return this};this.onBufferChange=function(r){return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER,r)};this.onBufferFull=function(r){return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL,r)};this.onError=function(r){return this.eventListener(b.api.events.JWPLAYER_ERROR,r)};this.onFullscreen=function(r){return this.eventListener(b.api.events.JWPLAYER_FULLSCREEN,r)};this.onMeta=function(r){return this.eventListener(b.api.events.JWPLAYER_MEDIA_META,r)};this.onMute=function(r){return this.eventListener(b.api.events.JWPLAYER_MEDIA_MUTE,r)};this.onPlaylist=function(r){return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_LOADED,r)};this.onPlaylistItem=function(r){return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM,r)};this.onReady=function(r){return this.eventListener(b.api.events.API_READY,r)};this.onResize=function(r){return this.eventListener(b.api.events.JWPLAYER_RESIZE,r)};this.onComplete=function(r){return this.eventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE,r)};this.onTime=function(r){return this.eventListener(b.api.events.JWPLAYER_MEDIA_TIME,r)};this.onVolume=function(r){return this.eventListener(b.api.events.JWPLAYER_MEDIA_VOLUME,r)};this.onBuffer=function(r){return this.stateListener(b.api.events.state.BUFFERING,r)};this.onPause=function(r){return this.stateListener(b.api.events.state.PAUSED,r)};this.onPlay=function(r){return this.stateListener(b.api.events.state.PLAYING,r)};this.onIdle=function(r){return this.stateListener(b.api.events.state.IDLE,r)};this.remove=function(){l={};i=[];if(b.utils.getOuterHTML(this.container)!=o){b.api.destroyPlayer(this.id,o)}};this.setup=function(s){if(b.embed){var r=this.id;this.remove();var t=b(r);t.config=s;return new b.embed(t)}return this};this.registerPlugin=function(t,s,r){b.plugins.registerPlugin(t,s,r)};this.setPlayer=function(r,s){h=r;this.renderingMode=s};this.stateListener=function(r,s){if(!q[r]){q[r]=[];this.eventListener(b.api.events.JWPLAYER_PLAYER_STATE,g(r))}q[r].push(s);return this};function g(r){return function(t){var s=t.newstate,v=t.oldstate;if(s==r){var u=q[s];if(u){for(var w=0;w<u.length;w++){if(typeof u[w]=="function"){u[w].call(this,{oldstate:v,newstate:s})}}}}}}this.addInternalListener=function(r,s){r.jwAddEventListener(s,'function(dat) { jwplayer("'+this.id+'").dispatchEvent("'+s+'", dat); }')};this.eventListener=function(r,s){if(!l[r]){l[r]=[];if(h&&k){this.addInternalListener(h,r)}}l[r].push(s);return this};this.dispatchEvent=function(t){if(l[t]){var s=f(t,arguments[1]);for(var r=0;r<l[t].length;r++){if(typeof l[t][r]=="function"){l[t][r].call(this,s)}}}};function f(t,r){var v=b.utils.extend({},r);if(t==b.api.events.JWPLAYER_FULLSCREEN&&!v.fullscreen){v.fullscreen=v.message=="true"?true:false;delete v.message}else{if(typeof v.data=="object"){v=b.utils.extend(v,v.data);delete v.data}}var s=["position","duration","offset"];for(var u in s){if(v[s[u]]){v[s[u]]=Math.round(v[s[u]]*1000)/1000}}return v}this.callInternal=function(s,r){if(k){if(typeof h!="undefined"&&typeof h[s]=="function"){if(r!==undefined){return(h[s])(r)}else{return(h[s])()}}return null}else{i.push({method:s,parameters:r})}};this.playerReady=function(t){k=true;if(!h){this.setPlayer(document.getElementById(t.id))}this.container=document.getElementById(this.id);for(var r in l){this.addInternalListener(h,r)}this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM,function(u){if(u.index!==undefined){m=u.index}p={}});this.eventListener(b.api.events.JWPLAYER_MEDIA_META,function(u){b.utils.extend(p,u.metadata)});this.dispatchEvent(b.api.events.API_READY);while(i.length>0){var s=i.shift();this.callInternal(s.method,s.parameters)}};this.getItemMeta=function(){return p};this.getCurrentItem=function(){return m};function n(t,v,u){var r=[];if(!v){v=0}if(!u){u=t.length-1}for(var s=v;s<=u;s++){r.push(t[s])}return r}return this};b.api.selectPlayer=function(d){var c;if(d===undefined){d=0}if(d.nodeType){c=d}else{if(typeof d=="string"){c=document.getElementById(d)}}if(c){var e=b.api.playerById(c.id);if(e){return e}else{return b.api.addPlayer(new b.api(c))}}else{if(typeof d=="number"){return b.getPlayers()[d]}}return null};b.api.events={API_READY:"jwplayerAPIReady",JWPLAYER_READY:"jwplayerReady",JWPLAYER_FULLSCREEN:"jwplayerFullscreen",JWPLAYER_RESIZE:"jwplayerResize",JWPLAYER_ERROR:"jwplayerError",JWPLAYER_MEDIA_BUFFER:"jwplayerMediaBuffer",JWPLAYER_MEDIA_BUFFER_FULL:"jwplayerMediaBufferFull",JWPLAYER_MEDIA_ERROR:"jwplayerMediaError",JWPLAYER_MEDIA_LOADED:"jwplayerMediaLoaded",JWPLAYER_MEDIA_COMPLETE:"jwplayerMediaComplete",JWPLAYER_MEDIA_TIME:"jwplayerMediaTime",JWPLAYER_MEDIA_VOLUME:"jwplayerMediaVolume",JWPLAYER_MEDIA_META:"jwplayerMediaMeta",JWPLAYER_MEDIA_MUTE:"jwplayerMediaMute",JWPLAYER_PLAYER_STATE:"jwplayerPlayerState",JWPLAYER_PLAYLIST_LOADED:"jwplayerPlaylistLoaded",JWPLAYER_PLAYLIST_ITEM:"jwplayerPlaylistItem"};b.api.events.state={BUFFERING:"BUFFERING",IDLE:"IDLE",PAUSED:"PAUSED",PLAYING:"PLAYING"};b.api.playerById=function(d){for(var c=0;c<a.length;c++){if(a[c].id==d){return a[c]}}return null};b.api.addPlayer=function(c){for(var d=0;d<a.length;d++){if(a[d]==c){return c}}a.push(c);return c};b.api.destroyPlayer=function(g,d){var f=-1;for(var i=0;i<a.length;i++){if(a[i].id==g){f=i;continue}}if(f>=0){var c=document.getElementById(a[f].id);if(document.getElementById(a[f].id+"_wrapper")){c=document.getElementById(a[f].id+"_wrapper")}if(c){if(d){b.utils.setOuterHTML(c,d)}else{var h=document.createElement("div");var e=c.id;if(c.id.indexOf("_wrapper")==c.id.length-8){newID=c.id.substring(0,c.id.length-8)}h.setAttribute("id",e);c.parentNode.replaceChild(h,c)}}a.splice(f,1)}return null};b.getPlayers=function(){return a.slice(0)}})(jwplayer);var _userPlayerReady=(typeof playerReady=="function")?playerReady:undefined;playerReady=function(b){var a=jwplayer.api.playerById(b.id);if(a){a.playerReady(b)}if(_userPlayerReady){_userPlayerReady.call(this,b)}};(function(a){a.embed=function(g){var i={width:400,height:300,components:{controlbar:{position:"over"}}};var f=a.utils.mediaparser.parseMedia(g.container);var e=new a.embed.config(a.utils.extend(i,f,g.config),this);var h=a.plugins.loadPlugins(g.id,e.plugins);function c(l,k){for(var j in k){if(typeof l[j]=="function"){(l[j]).call(l,k[j])}}}function d(){if(h.getStatus()==a.utils.loaderstatus.COMPLETE){for(var l=0;l<e.modes.length;l++){if(e.modes[l].type&&a.embed[e.modes[l].type]){var j=e;if(e.modes[l].config){j=a.utils.extend(a.utils.clone(e),e.modes[l].config)}var k=new a.embed[e.modes[l].type](document.getElementById(g.id),e.modes[l],j,h,g);if(k.supportsConfig()){k.embed();c(g,e.events);return g}}}a.utils.log("No suitable players found");new a.embed.logo(a.utils.extend({hide:true},e.components.logo),"none",g.id)}}h.addEventListener(a.events.COMPLETE,d);h.addEventListener(a.events.ERROR,d);h.load();return g};function b(){if(!document.body){return setTimeout(b,15)}var c=a.utils.selectors.getElementsByTagAndClass("video","jwplayer");for(var d=0;d<c.length;d++){var e=c[d];a(e.id).setup({})}}b()})(jwplayer);(function(a){function b(){return[{type:"flash",src:"/jwplayer/player.swf"},{type:"html5"},{type:"download"}]}function d(h){var g=h.toLowerCase();var f=["left","right","top","bottom"];for(var e=0;e<f.length;e++){if(g==f[e]){return true}}return false}function c(f){var e=false;e=(f instanceof Array)||(typeof f=="object"&&!f.position&&!f.size);return e}a.embed.config=function(f,p){var o=a.utils.extend({},f);var m;if(c(o.playlist)){m=o.playlist;delete o.playlist}for(var i in o){if(i.indexOf(".")>-1){var q=i.split(".");var r=o;for(var e=0;e<q.length;e++){if(e==q.length-1){if(a.utils.typeOf(r)=="object"){r[q[e]]=o[i];delete o[i]}}else{if(r[q[e]]===undefined){r[q[e]]={}}r=r[q[e]]}}}}if(typeof o.plugins=="string"){var g=o.plugins.split(",");if(typeof o.plugins!="object"){o.plugins={}}for(var k=0;k<g.length;k++){var l=a.utils.getPluginName(g[k]);if(typeof o[l]=="object"){o.plugins[g[k]]=o[l];delete o[l]}else{o.plugins[g[k]]={}}}}var j=["playlist","dock","controlbar"];for(var n=0;n<j.length;n++){if(typeof o[j[n]]=="string"){if(!o.components[j[n]]){o.components[j[n]]={}}o.components[j[n]].position=o[j[n]];delete o[j[n]]}else{if(o[j[n]]){o.components[j[n]]=o[j[n]];delete o[j[n]]}}if(typeof o[j[n]+"size"]!="undefined"){if(!o.components[j[n]]){o.components[j[n]]={}}o.components[j[n]].size=o[j[n]+"size"];delete o[j[n]+"size"]}}if(typeof o.icons!="undefined"){if(!o.components.display){o.components.display={}}o.components.display.icons=o.icons;delete o.icons}if(o.players){o.modes=o.players;delete o.players}var h;if(o.flashplayer&&!o.modes){h=b();h[0].src=o.flashplayer;delete o.flashplayer}else{if(o.modes){if(typeof o.modes=="string"){h=b();h[0].src=o.modes}else{if(o.modes instanceof Array){h=o.modes}else{if(typeof o.modes=="object"&&o.modes.type){h=[o.modes]}}}delete o.modes}else{h=b()}}o.modes=h;if(m){o.playlist=m}return o}})(jwplayer);(function(a){a.embed.download=function(c,g,b,d,f){this.embed=function(){var j=a.utils.extend({},b);var p={};var i=b.width?b.width:480;if(typeof i!="number"){i=parseInt(i,10)}var l=b.height?b.height:320;if(typeof l!="number"){l=parseInt(l,10)}var t,n,m;var r={};if(b.playlist&&b.playlist.length){r.file=b.playlist[0].file;n=b.playlist[0].image;r.levels=b.playlist[0].levels}else{r.file=b.file;n=b.image;r.levels=b.levels}if(r.file){t=r.file}else{if(r.levels&&r.levels.length){t=r.levels[0].file}}m=t?"pointer":"auto";var k={display:{style:{cursor:m,width:i,height:l,backgroundColor:"#000",position:"relative",textDecoration:"none",border:"none",display:"block"}},display_icon:{style:{cursor:m,position:"absolute",display:t?"block":"none",top:0,left:0,border:0,margin:0,padding:0,zIndex:3,width:50,height:50,backgroundImage:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg==)"}},display_iconBackground:{style:{cursor:m,position:"absolute",display:t?"block":"none",top:((l-50)/2),left:((i-50)/2),border:0,width:50,height:50,margin:0,padding:0,zIndex:2,backgroundImage:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC)"}},display_image:{style:{width:i,height:l,display:n?"block":"none",position:"absolute",cursor:m,left:0,top:0,margin:0,padding:0,textDecoration:"none",zIndex:1,border:"none"}}};var h=function(u,w,x){var v=document.createElement(u);if(x){v.id=x}else{v.id=c.id+"_jwplayer_"+w}a.utils.css(v,k[w].style);return v};p.display=h("a","display",c.id);if(t){p.display.setAttribute("href",a.utils.getAbsolutePath(t))}p.display_image=h("img","display_image");p.display_image.setAttribute("alt","Click to download...");if(n){p.display_image.setAttribute("src",a.utils.getAbsolutePath(n))}if(true){p.display_icon=h("div","display_icon");p.display_iconBackground=h("div","display_iconBackground");p.display.appendChild(p.display_image);p.display_iconBackground.appendChild(p.display_icon);p.display.appendChild(p.display_iconBackground)}_css=a.utils.css;_hide=function(u){_css(u,{display:"none"})};function q(u){_imageWidth=p.display_image.naturalWidth;_imageHeight=p.display_image.naturalHeight;s()}function s(){a.utils.stretch(a.utils.stretching.UNIFORM,p.display_image,i,l,_imageWidth,_imageHeight)}p.display_image.onerror=function(u){_hide(p.display_image)};p.display_image.onload=q;c.parentNode.replaceChild(p.display,c);var o=(b.plugins&&b.plugins.logo)?b.plugins.logo:{};p.display.appendChild(new a.embed.logo(b.components.logo,"download",c.id));f.container=document.getElementById(f.id);f.setPlayer(p.display,"download")};this.supportsConfig=function(){if(b){var j=a.utils.getFirstPlaylistItemFromConfig(b);if(typeof j.file=="undefined"&&typeof j.levels=="undefined"){return true}else{if(j.file){return e(j.file,j.provider,j.playlistfile)}else{if(j.levels&&j.levels.length){for(var h=0;h<j.levels.length;h++){if(j.levels[h].file&&e(j.levels[h].file,j.provider,j.playlistfile)){return true}}}}}}else{return true}};function e(i,k,h){if(h){return false}var j=["image","sound","youtube","http"];if(k&&(j.toString().indexOf(k)>-1)){return true}if(!k||(k&&k=="video")){var l=a.utils.extension(i);if(l&&a.utils.extensionmap[l]){return true}}return false}}})(jwplayer);(function(a){a.embed.flash=function(g,h,l,f,j){function m(o,n,p){var q=document.createElement("param");q.setAttribute("name",n);q.setAttribute("value",p);o.appendChild(q)}function k(o,p,n){return function(q){if(n){document.getElementById(j.id+"_wrapper").appendChild(p)}var s=document.getElementById(j.id).getPluginConfig("display");o.resize(s.width,s.height);var r={left:s.x,top:s.y};a.utils.css(p,r)}}function e(p){if(!p){return{}}var r={};for(var o in p){var n=p[o];for(var q in n){r[o+"."+q]=n[q]}}return r}function i(q,p){if(q[p]){var s=q[p];for(var o in s){var n=s[o];if(typeof n=="string"){if(!q[o]){q[o]=n}}else{for(var r in n){if(!q[o+"."+r]){q[o+"."+r]=n[r]}}}}delete q[p]}}function c(q){if(!q){return{}}var t={},s=[];for(var n in q){var p=a.utils.getPluginName(n);var o=q[n];s.push(n);for(var r in o){t[p+"."+r]=o[r]}}t.plugins=s.join(",");return t}function d(p){var n=p.netstreambasepath?"":"netstreambasepath="+encodeURIComponent(window.location.href)+"&";for(var o in p){n+=o+"="+encodeURIComponent(p[o])+"&"}return n.substring(0,n.length-1)}function b(n){return function(p){if(n.playlist){this.load(n.playlist)}else{if(n.levels){var o=this.getPlaylistItem(0);if(!o){o=n}if(!o.image){o.image=n.image}if(!o.levels){o.levels=n.levels}this.load(o)}}}}this.embed=function(){if(l.levels||l.playlist){j.onReady(b(l))}l.id=j.id;var y;if(g.id+"_wrapper"==g.parentNode.id){y=document.getElementById(g.id+"_wrapper")}else{y=document.createElement("div");y.id=g.id+"_wrapper";a.utils.wrap(g,y);y.style.position="relative"}var q=a.utils.extend({},l);var o=f.setupPlugins(j,q,k);if(o.length>0){a.utils.extend(q,c(o.plugins))}else{delete q.plugins}var n=q.width;var w=q.height;var r=["height","width","levels","playlist","modes","events"];for(var u=0;u<r.length;u++){delete q[r[u]]}var p="opaque";if(q.wmode){p=q.wmode}i(q,"components");i(q,"providers");var x="#000000";var t;if(a.utils.isIE()){var v='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" bgcolor="'+x+'" width="'+n+'" height="'+w+'" id="'+g.id+'" name="'+g.id+'">';v+='<param name="movie" value="'+h.src+'">';v+='<param name="allowfullscreen" value="true">';v+='<param name="allowscriptaccess" value="always">';v+='<param name="seamlesstabbing" value="true">';v+='<param name="wmode" value="'+p+'">';v+='<param name="flashvars" value="'+d(q)+'">';v+="</object>";a.utils.setOuterHTML(g,v);t=document.getElementById(g.id)}else{var s=document.createElement("object");s.setAttribute("type","application/x-shockwave-flash");s.setAttribute("data",h.src);s.setAttribute("width",n);s.setAttribute("height",w);s.setAttribute("bgcolor","#000000");s.setAttribute("id",g.id);s.setAttribute("name",g.id);m(s,"allowfullscreen","true");m(s,"allowscriptaccess","always");m(s,"seamlesstabbing","true");m(s,"wmode",p);m(s,"flashvars",d(q));g.parentNode.replaceChild(s,g);t=s}j.container=t;j.setPlayer(t,"flash")};this.supportsConfig=function(){if(a.utils.hasFlash()){if(l){var o=a.utils.getFirstPlaylistItemFromConfig(l);if(typeof o.file=="undefined"&&typeof o.levels=="undefined"){return true}else{if(o.file){return flashCanPlay(o.file,o.provider)}else{if(o.levels&&o.levels.length){for(var n=0;n<o.levels.length;n++){if(o.levels[n].file&&flashCanPlay(o.levels[n].file,o.provider)){return true}}}}}}else{return true}}return false};flashCanPlay=function(n,p){var o=["video","http","sound","image"];if(p&&(o.toString().indexOf(p<0))){return true}var q=a.utils.extension(n);if(!q){return true}if(a.utils.extensionmap[q]!==undefined&&a.utils.extensionmap[q].flash===undefined){return false}return true}}})(jwplayer);(function(a){a.embed.html5=function(c,g,b,d,f){function e(i,j,h){return function(k){var l=document.getElementById(c.id+"_displayarea");if(h){l.appendChild(j)}var m=l.style;i.resize(parseInt(m.width.replace("px","")),parseInt(m.height.replace("px","")));j.left=m.left;j.top=m.top}}this.embed=function(){if(a.html5){d.setupPlugins(f,b,e);c.innerHTML="";var j=a.utils.extend({screencolor:"0x000000"},b);var h=["plugins","modes","events"];for(var k=0;k<h.length;k++){delete j[h[k]]}if(j.levels&&!j.sources){j.sources=b.levels}if(j.skin&&j.skin.toLowerCase().indexOf(".zip")>0){j.skin=j.skin.replace(/\.zip/i,".xml")}var l=new (a.html5(c)).setup(j);f.container=document.getElementById(f.id);f.setPlayer(l,"html5")}else{return null}};this.supportsConfig=function(){var h=document.createElement("video");if(!!h.canPlayType){if(b){var k=a.utils.getFirstPlaylistItemFromConfig(b);if(typeof k.file=="undefined"&&typeof k.levels=="undefined"){return true}else{if(k.file){return html5CanPlay(h,k.file,k.provider,k.playlistfile)}else{if(k.levels&&k.levels.length){for(var j=0;j<k.levels.length;j++){if(k.levels[j].file&&html5CanPlay(h,k.levels[j].file,k.provider,k.playlistfile)){return true}}}}}}else{return true}}return false};html5CanPlay=function(j,i,k,h){if(h){return false}if(k&&k=="youtube"){return true}if(k&&k!="video"&&k!="http"){return false}var l=a.utils.extension(i);if(!l||a.utils.extensionmap[l]===undefined){return true}if(a.utils.extensionmap[l].html5===undefined){return false}if(a.utils.isLegacyAndroid()&&l.match(/m4v|mp4/)){return true}return browserCanPlay(j,a.utils.extensionmap[l].html5)};browserCanPlay=function(i,h){if(!h){return true}return i.canPlayType(h)}}})(jwplayer);(function(a){a.embed.logo=function(l,k,d){var i={prefix:"http://l.longtailvideo.com/"+k+"/",file:"logo.png",link:"http://www.longtailvideo.com/players/jw-flv-player/",margin:8,out:0.5,over:1,timeout:3,hide:false,position:"bottom-left"};_css=a.utils.css;var b;var h;j();function j(){n();c();f()}function n(){if(i.prefix){var p=a.version.split(/\W/).splice(0,2).join("/");if(i.prefix.indexOf(p)<0){i.prefix+=p+"/"}}h=a.utils.extend({},i)}function o(){var r={border:"none",textDecoration:"none",position:"absolute",cursor:"pointer",zIndex:10};r.display=h.hide?"none":"block";var q=h.position.toLowerCase().split("-");for(var p in q){r[q[p]]=h.margin}return r}function c(){b=document.createElement("img");b.id=d+"_jwplayer_logo";b.style.display="none";b.onload=function(p){_css(b,o());e()};if(!h.file){return}if(h.file.indexOf("http://")===0){b.src=h.file}else{b.src=h.prefix+h.file}}if(!h.file){return}function f(){if(h.link){b.onmouseover=g;b.onmouseout=e;b.onclick=m}else{this.mouseEnabled=false}}function m(p){if(typeof p!="undefined"){p.preventDefault();p.stopPropagation()}if(h.link){window.open(h.link,"_blank")}return}function e(p){if(h.link){b.style.opacity=h.out}return}function g(p){if(h.hide){b.style.opacity=h.over}return}return b}})(jwplayer);(function(a){a.html5=function(b){var c=b;this.setup=function(d){a.utils.extend(this,new a.html5.api(c,d));return this};return this}})(jwplayer);(function(b){var c=b.utils.css;b.html5.view=function(p,o,e){var s=p;var l=o;var v=e;var u;var f;var z;var q;var A;var n;function x(){u=document.createElement("div");u.id=l.id;u.className=l.className;_videowrapper=document.createElement("div");_videowrapper.id=u.id+"_video_wrapper";l.id=u.id+"_video";c(u,{position:"relative",height:v.height,width:v.width,padding:0,backgroundColor:B(),zIndex:0});function B(){if(s.skin.getComponentSettings("display")&&s.skin.getComponentSettings("display").backgroundcolor){return s.skin.getComponentSettings("display").backgroundcolor}return parseInt("000000",16)}c(l,{width:v.width,height:v.height,top:0,left:0,zIndex:1,margin:"auto",display:"block"});c(_videowrapper,{overflow:"hidden",position:"absolute",top:0,left:0,bottom:0,right:0});b.utils.wrap(l,u);b.utils.wrap(l,_videowrapper);q=document.createElement("div");q.id=u.id+"_displayarea";u.appendChild(q)}function j(){for(var B=0;B<v.plugins.order.length;B++){var C=v.plugins.order[B];if(v.plugins.object[C].getDisplayElement!==undefined){v.plugins.object[C].height=h(v.plugins.object[C].getDisplayElement().style.height);v.plugins.object[C].width=h(v.plugins.object[C].getDisplayElement().style.width);v.plugins.config[C].currentPosition=v.plugins.config[C].position}}t()}function t(C){if(v.getMedia()!==undefined){for(var B=0;B<v.plugins.order.length;B++){var D=v.plugins.order[B];if(v.plugins.object[D].getDisplayElement!==undefined){if(v.getMedia().hasChrome()){v.plugins.config[D].currentPosition=b.html5.view.positions.NONE}else{v.plugins.config[D].currentPosition=v.plugins.config[D].position}}}}i(v.width,v.height)}function h(B){if(typeof B=="string"){if(B===""){return 0}else{if(B.lastIndexOf("%")>-1){return B}else{return parseInt(B.replace("px",""),10)}}}return B}this.setup=function(B){l=B;x();j();s.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_LOADED,t);s.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_META,function(){w()});var C;if(window.onresize!==null){C=window.onresize}window.onresize=function(D){if(C!==undefined){try{C(D)}catch(F){}}if(s.jwGetFullscreen()){var E=document.body.getBoundingClientRect();v.width=Math.abs(E.left)+Math.abs(E.right);v.height=window.innerHeight}i(v.width,v.height)}};function g(B){switch(B.keyCode){case 27:if(s.jwGetFullscreen()){s.jwSetFullscreen(false)}break;case 32:if(s.jwGetState()!=b.api.events.state.IDLE&&s.jwGetState()!=b.api.events.state.PAUSED){s.jwPause()}else{s.jwPlay()}break}}function i(E,B){if(u.style.display=="none"){return}var D=[].concat(v.plugins.order);D.reverse();A=D.length+2;if(!v.fullscreen){v.width=E;v.height=B;f=E;z=B;c(q,{top:0,bottom:0,left:0,right:0,width:E,height:B});c(u,{height:z,width:f});var C=m(r,D);if(C.length>0){A+=C.length;m(k,C,true)}}else{if(navigator.vendor.indexOf("Apple")!==0){m(y,D,true)}}w()}function m(G,D,E){var C=[];for(var B=0;B<D.length;B++){var H=D[B];if(v.plugins.object[H].getDisplayElement!==undefined){if(v.plugins.config[H].currentPosition!=b.html5.view.positions.NONE){var F=G(H,A--);if(!F){C.push(H)}else{v.plugins.object[H].resize(F.width,F.height);if(E){delete F.width;delete F.height}c(v.plugins.object[H].getDisplayElement(),F)}}else{c(v.plugins.object[H].getDisplayElement(),{display:"none"})}}}return C}function r(C,D){if(v.plugins.object[C].getDisplayElement!==undefined){if(v.plugins.config[C].position&&a(v.plugins.config[C].position)){if(v.plugins.object[C].getDisplayElement().parentNode===null){u.appendChild(v.plugins.object[C].getDisplayElement())}var B=d(C);B.zIndex=D;return B}}return false}function k(D,E){if(v.plugins.object[D].getDisplayElement().parentNode===null){q.appendChild(v.plugins.object[D].getDisplayElement())}var B=v.width,C=v.height;if(typeof v.width=="string"&&v.width.lastIndexOf("%")>-1){percentage=parseFloat(v.width.substring(0,v.width.lastIndexOf("%")))/100;B=Math.round(window.innerWidth*percentage)}if(typeof v.height=="string"&&v.height.lastIndexOf("%")>-1){percentage=parseFloat(v.height.substring(0,v.height.lastIndexOf("%")))/100;C=Math.round(window.innerHeight*percentage)}return{position:"absolute",width:(B-h(q.style.left)-h(q.style.right)),height:(C-h(q.style.top)-h(q.style.bottom)),zIndex:E}}function y(B,C){return{position:"fixed",width:v.width,height:v.height,zIndex:C}}function w(){q.style.position="absolute";v.getMedia().getDisplayElement().style.position="absolute";if(v.getMedia().getDisplayElement().videoWidth==0||v.getMedia().getDisplayElement().videoHeight==0){return}var B,D;if(q.style.width.toString().lastIndexOf("%")>-1||q.style.width.toString().lastIndexOf("%")>-1){var C=q.getBoundingClientRect();B=Math.abs(C.left)+Math.abs(C.right);D=Math.abs(C.top)+Math.abs(C.bottom)}else{B=h(q.style.width);D=h(q.style.height)}b.utils.stretch(s.jwGetStretching(),v.getMedia().getDisplayElement(),B,D,v.getMedia().getDisplayElement().videoWidth,v.getMedia().getDisplayElement().videoHeight)}function d(C){var D={position:"absolute",margin:0,padding:0,top:null};var B=v.plugins.config[C].currentPosition.toLowerCase();switch(B.toUpperCase()){case b.html5.view.positions.TOP:D.top=h(q.style.top);D.left=h(q.style.left);D.width=f-h(q.style.left)-h(q.style.right);D.height=v.plugins.object[C].height;q.style[B]=h(q.style[B])+v.plugins.object[C].height+"px";q.style.height=h(q.style.height)-D.height+"px";break;case b.html5.view.positions.RIGHT:D.top=h(q.style.top);D.right=h(q.style.right);D.width=D.width=v.plugins.object[C].width;D.height=z-h(q.style.top)-h(q.style.bottom);q.style[B]=h(q.style[B])+v.plugins.object[C].width+"px";q.style.width=h(q.style.width)-D.width+"px";break;case b.html5.view.positions.BOTTOM:D.bottom=h(q.style.bottom);D.left=h(q.style.left);D.width=f-h(q.style.left)-h(q.style.right);D.height=v.plugins.object[C].height;q.style[B]=h(q.style[B])+v.plugins.object[C].height+"px";q.style.height=h(q.style.height)-D.height+"px";break;case b.html5.view.positions.LEFT:D.top=h(q.style.top);D.left=h(q.style.left);D.width=v.plugins.object[C].width;D.height=z-h(q.style.top)-h(q.style.bottom);q.style[B]=h(q.style[B])+v.plugins.object[C].width+"px";q.style.width=h(q.style.width)-D.width+"px";break;default:break}return D}this.resize=i;this.fullscreen=function(E){if(navigator.vendor.indexOf("Apple")===0){if(v.getMedia().getDisplayElement().webkitSupportsFullscreen){if(E){try{v.getMedia().getDisplayElement().webkitEnterFullscreen()}catch(D){}}else{try{v.getMedia().getDisplayElement().webkitExitFullscreen()}catch(D){}}}}else{if(E){document.onkeydown=g;clearInterval(n);var C=document.body.getBoundingClientRect();v.width=Math.abs(C.left)+Math.abs(C.right);v.height=window.innerHeight;var B={position:"fixed",width:"100%",height:"100%",top:0,left:0,zIndex:2147483000};c(u,B);B.zIndex=1;c(v.getMedia().getDisplayElement(),B);B.zIndex=2;c(q,B)}else{document.onkeydown="";v.width=f;v.height=z;c(u,{position:"relative",height:v.height,width:v.width,zIndex:0})}i(v.width,v.height)}}};function a(d){return([b.html5.view.positions.TOP,b.html5.view.positions.RIGHT,b.html5.view.positions.BOTTOM,b.html5.view.positions.LEFT].toString().indexOf(d.toUpperCase())>-1)}b.html5.view.positions={TOP:"TOP",RIGHT:"RIGHT",BOTTOM:"BOTTOM",LEFT:"LEFT",OVER:"OVER",NONE:"NONE"}})(jwplayer);(function(a){var b={backgroundcolor:"",margin:10,font:"Arial,sans-serif",fontsize:10,fontcolor:parseInt("000000",16),fontstyle:"normal",fontweight:"bold",buttoncolor:parseInt("ffffff",16),position:a.html5.view.positions.BOTTOM,idlehide:false,layout:{left:{position:"left",elements:[{name:"play",type:"button"},{name:"divider",type:"divider"},{name:"prev",type:"button"},{name:"divider",type:"divider"},{name:"next",type:"button"},{name:"divider",type:"divider"},{name:"elapsed",type:"text"}]},center:{position:"center",elements:[{name:"time",type:"slider"}]},right:{position:"right",elements:[{name:"duration",type:"text"},{name:"blank",type:"button"},{name:"divider",type:"divider"},{name:"mute",type:"button"},{name:"volume",type:"slider"},{name:"divider",type:"divider"},{name:"fullscreen",type:"button"}]}}};_css=a.utils.css;_hide=function(c){_css(c,{display:"none"})};_show=function(c){_css(c,{display:"block"})};a.html5.controlbar=function(j,L){var i=j;var A=a.utils.extend({},b,i.skin.getComponentSettings("controlbar"),L);if(A.position==a.html5.view.positions.NONE||typeof a.html5.view.positions[A.position]=="undefined"){return}if(a.utils.mapLength(i.skin.getComponentLayout("controlbar"))>0){A.layout=i.skin.getComponentLayout("controlbar")}var P;var I;var O;var B;var t="none";var f;var h;var Q;var e;var d;var w;var s;var J={};var n=false;var c={};function H(){O=0;B=0;I=0;if(!n){var V={height:i.skin.getSkinElement("controlbar","background").height,backgroundColor:A.backgroundcolor};P=document.createElement("div");P.id=i.id+"_jwplayer_controlbar";_css(P,V)}v("capLeft","left",false,P);var W={position:"absolute",height:i.skin.getSkinElement("controlbar","background").height,left:i.skin.getSkinElement("controlbar","capLeft").width,zIndex:0};N("background",P,W,"img");if(i.skin.getSkinElement("controlbar","background")){J.background.src=i.skin.getSkinElement("controlbar","background").src}W.zIndex=1;N("elements",P,W);v("capRight","right",false,P)}this.getDisplayElement=function(){return P};this.resize=function(X,V){a.utils.cancelAnimation(P);document.getElementById(i.id).onmousemove=x;d=X;w=V;x();var W=u();D({id:i.id,duration:Q,position:h});r({id:i.id,bufferPercent:e});return W};function o(){var W=["timeSlider","volumeSlider","timeSliderRail","volumeSliderRail"];for(var X in W){var V=W[X];if(typeof J[V]!="undefined"){c[V]=J[V].getBoundingClientRect()}}}function x(){a.utils.cancelAnimation(P);if(g()){a.utils.fadeTo(P,1,0,1,0)}else{a.utils.fadeTo(P,0,0.1,1,2)}}function g(){if(i.jwGetState()==a.api.events.state.IDLE||i.jwGetState()==a.api.events.state.PAUSED){if(A.idlehide){return false}return true}if(i.jwGetFullscreen()){return false}if(A.position==a.html5.view.positions.OVER){return false}return true}function N(Z,Y,X,V){var W;if(!n){if(!V){V="div"}W=document.createElement(V);J[Z]=W;W.id=P.id+"_"+Z;Y.appendChild(W)}else{W=document.getElementById(P.id+"_"+Z)}if(X!==undefined){_css(W,X)}return W}function G(){U(A.layout.left);U(A.layout.right,-1);U(A.layout.center)}function U(Y,V){var Z=Y.position=="right"?"right":"left";var X=a.utils.extend([],Y.elements);if(V!==undefined){X.reverse()}for(var W=0;W<X.length;W++){z(X[W],Z)}}function E(){return I++}function z(Z,ab){var Y,W,X,V,ad;switch(Z.name){case"play":v("playButton",ab,false);v("pauseButton",ab,true);K("playButton","jwPlay");K("pauseButton","jwPause");break;case"divider":v("divider"+E(),ab,true,undefined,undefined,Z.width);break;case"prev":v("prevButton",ab,true);K("prevButton","jwPlaylistPrev");break;case"next":v("nextButton",ab,true);K("nextButton","jwPlaylistNext");break;case"elapsed":v("elapsedText",ab,true);break;case"time":W=i.skin.getSkinElement("controlbar","timeSliderCapLeft")===undefined?0:i.skin.getSkinElement("controlbar","timeSliderCapLeft").width;X=i.skin.getSkinElement("controlbar","timeSliderCapRight")===undefined?0:i.skin.getSkinElement("controlbar","timeSliderCapRight").width;Y=ab=="left"?W:X;V=i.skin.getSkinElement("controlbar","timeSliderRail").width+W+X;ad={height:i.skin.getSkinElement("controlbar","background").height,position:"absolute",top:0,width:V};ad[ab]=ab=="left"?O:B;var aa=N("timeSlider",J.elements,ad);v("timeSliderCapLeft",ab,true,aa,ab=="left"?0:Y);v("timeSliderRail",ab,false,aa,Y);v("timeSliderBuffer",ab,false,aa,Y);v("timeSliderProgress",ab,false,aa,Y);v("timeSliderThumb",ab,false,aa,Y);v("timeSliderCapRight",ab,true,aa,ab=="right"?0:Y);M("time");break;case"fullscreen":v("fullscreenButton",ab,false);v("normalscreenButton",ab,true);K("fullscreenButton","jwSetFullscreen",true);K("normalscreenButton","jwSetFullscreen",false);break;case"volume":W=i.skin.getSkinElement("controlbar","volumeSliderCapLeft")===undefined?0:i.skin.getSkinElement("controlbar","volumeSliderCapLeft").width;X=i.skin.getSkinElement("controlbar","volumeSliderCapRight")===undefined?0:i.skin.getSkinElement("controlbar","volumeSliderCapRight").width;Y=ab=="left"?W:X;V=i.skin.getSkinElement("controlbar","volumeSliderRail").width+W+X;ad={height:i.skin.getSkinElement("controlbar","background").height,position:"absolute",top:0,width:V};ad[ab]=ab=="left"?O:B;var ac=N("volumeSlider",J.elements,ad);v("volumeSliderCapLeft",ab,true,ac,ab=="left"?0:Y);v("volumeSliderRail",ab,true,ac,Y);v("volumeSliderProgress",ab,false,ac,Y);v("volumeSliderCapRight",ab,true,ac,ab=="right"?0:Y);M("volume");break;case"mute":v("muteButton",ab,false);v("unmuteButton",ab,true);K("muteButton","jwSetMute",true);K("unmuteButton","jwSetMute",false);break;case"duration":v("durationText",ab,true);break}}function v(X,aa,W,ac,Y,V){if((i.skin.getSkinElement("controlbar",X)!==undefined||X.indexOf("Text")>0||X.indexOf("divider")===0)&&!(X.indexOf("divider")===0&&s.indexOf("divider")===0)){s=X;var Z={height:i.skin.getSkinElement("controlbar","background").height,position:"absolute",display:"block",top:0};if((X.indexOf("next")===0||X.indexOf("prev")===0)&&i.jwGetPlaylist().length<2){W=false;Z.display="none"}var ad;if(X.indexOf("Text")>0){X.innerhtml="00:00";Z.font=A.fontsize+"px/"+(i.skin.getSkinElement("controlbar","background").height+1)+"px "+A.font;Z.color=A.fontcolor;Z.textAlign="center";Z.fontWeight=A.fontweight;Z.fontStyle=A.fontstyle;Z.cursor="default";ad=14+3*A.fontsize}else{if(X.indexOf("divider")===0){if(V){if(!isNaN(parseInt(V))){ad=parseInt(V)}}else{Z.background="url("+i.skin.getSkinElement("controlbar","divider").src+") repeat-x center left";ad=i.skin.getSkinElement("controlbar","divider").width}}else{Z.background="url("+i.skin.getSkinElement("controlbar",X).src+") repeat-x center left";ad=i.skin.getSkinElement("controlbar",X).width}}if(aa=="left"){Z.left=isNaN(Y)?O:Y;if(W){O+=ad}}else{if(aa=="right"){Z.right=isNaN(Y)?B:Y;if(W){B+=ad}}}if(a.utils.typeOf(ac)=="undefined"){ac=J.elements}Z.width=ad;if(n){_css(J[X],Z)}else{var ab=N(X,ac,Z);if(i.skin.getSkinElement("controlbar",X+"Over")!==undefined){ab.onmouseover=function(ae){ab.style.backgroundImage=["url(",i.skin.getSkinElement("controlbar",X+"Over").src,")"].join("")};ab.onmouseout=function(ae){ab.style.backgroundImage=["url(",i.skin.getSkinElement("controlbar",X).src,")"].join("")}}}}}function C(){i.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED,y);i.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_BUFFER,r);i.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,p);i.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_TIME,D);i.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE,T);i.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_VOLUME,k);i.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_COMPLETE,F)}function y(){H();G();u();R()}function R(){D({id:i.id,duration:i.jwGetDuration(),position:0});r({id:i.id,bufferProgress:0});T({id:i.id,mute:i.jwGetMute()});p({id:i.id,newstate:a.api.events.state.IDLE});k({id:i.id,volume:i.jwGetVolume()})}function K(X,Y,W){if(n){return}if(i.skin.getSkinElement("controlbar",X)!==undefined){var V=J[X];if(V!==null){_css(V,{cursor:"pointer"});if(Y=="fullscreen"){V.onmouseup=function(Z){Z.stopPropagation();i.jwSetFullscreen(!i.jwGetFullscreen())}}else{V.onmouseup=function(Z){Z.stopPropagation();if(W!==null){i[Y](W)}else{i[Y]()}}}}}}function M(V){if(n){return}var W=J[V+"Slider"];_css(J.elements,{cursor:"pointer"});_css(W,{cursor:"pointer"});W.onmousedown=function(X){t=V};W.onmouseup=function(X){X.stopPropagation();S(X.pageX)};W.onmousemove=function(X){if(t=="time"){f=true;var Y=X.pageX-c[V+"Slider"].left-window.pageXOffset;_css(J.timeSliderThumb,{left:Y})}}}function S(W){f=false;var V;if(t=="time"){V=W-c.timeSliderRail.left+window.pageXOffset;var Y=V/c.timeSliderRail.width*Q;if(Y<0){Y=0}else{if(Y>Q){Y=Q-3}}i.jwSeek(Y);if(i.jwGetState()!=a.api.events.state.PLAYING){i.jwPlay()}}else{if(t=="volume"){V=W-c.volumeSliderRail.left-window.pageXOffset;var X=Math.round(V/c.volumeSliderRail.width*100);if(X<0){X=0}else{if(X>100){X=100}}if(i.jwGetMute()){i.jwSetMute(false)}i.jwSetVolume(X)}}t="none"}function r(W){if(W.bufferPercent!==null){e=W.bufferPercent}var X=c.timeSliderRail.width;var V=isNaN(Math.round(X*e/100))?0:Math.round(X*e/100);_css(J.timeSliderBuffer,{width:V})}function T(V){if(V.mute){_hide(J.muteButton);_show(J.unmuteButton);_hide(J.volumeSliderProgress)}else{_show(J.muteButton);_hide(J.unmuteButton);_show(J.volumeSliderProgress)}}function p(V){if(V.newstate==a.api.events.state.BUFFERING||V.newstate==a.api.events.state.PLAYING){_show(J.pauseButton);_hide(J.playButton)}else{_hide(J.pauseButton);_show(J.playButton)}x();if(V.newstate==a.api.events.state.IDLE){_hide(J.timeSliderBuffer);_hide(J.timeSliderProgress);_hide(J.timeSliderThumb);D({id:i.id,duration:i.jwGetDuration(),position:0})}else{_show(J.timeSliderBuffer);if(V.newstate!=a.api.events.state.BUFFERING){_show(J.timeSliderProgress);_show(J.timeSliderThumb)}}}function F(V){r({bufferPercent:0});D(a.utils.extend(V,{position:0,duration:Q}))}function D(Y){if(Y.position!==null){h=Y.position}if(Y.duration!==null){Q=Y.duration}var W=(h===Q===0)?0:h/Q;var V=isNaN(Math.round(c.timeSliderRail.width*W))?0:Math.round(c.timeSliderRail.width*W);var X=V;J.timeSliderProgress.style.width=V+"px";if(!f){if(J.timeSliderThumb){J.timeSliderThumb.style.left=X+"px"}}if(J.durationText){J.durationText.innerHTML=m(Q)}if(J.elapsedText){J.elapsedText.innerHTML=m(h)}}function m(V){str="00:00";if(V>0){str=Math.floor(V/60)<10?"0"+Math.floor(V/60)+":":Math.floor(V/60)+":";str+=Math.floor(V%60)<10?"0"+Math.floor(V%60):Math.floor(V%60)}return str}function l(){var Y,W;var X=document.getElementById(P.id+"_elements").childNodes;for(var V in document.getElementById(P.id+"_elements").childNodes){if(isNaN(parseInt(V,10))){continue}if(X[V].id.indexOf(P.id+"_divider")===0&&W.id.indexOf(P.id+"_divider")===0){X[V].style.display="none"}else{if(X[V].id.indexOf(P.id+"_divider")===0&&Y.style.display!="none"){X[V].style.display="block"}}if(X[V].style.display!="none"){W=X[V]}Y=X[V]}}function u(){l();if(i.jwGetFullscreen()){_show(J.normalscreenButton);_hide(J.fullscreenButton)}else{_hide(J.normalscreenButton);_show(J.fullscreenButton)}var W={width:d};var V={};if(A.position==a.html5.view.positions.OVER||i.jwGetFullscreen()){W.left=A.margin;W.width-=2*A.margin;W.top=w-i.skin.getSkinElement("controlbar","background").height-A.margin;W.height=i.skin.getSkinElement("controlbar","background").height}else{W.left=0}V.left=i.skin.getSkinElement("controlbar","capLeft").width;V.width=W.width-i.skin.getSkinElement("controlbar","capLeft").width-i.skin.getSkinElement("controlbar","capRight").width;var X=i.skin.getSkinElement("controlbar","timeSliderCapLeft")===undefined?0:i.skin.getSkinElement("controlbar","timeSliderCapLeft").width;_css(J.timeSliderRail,{width:(V.width-O-B),left:X});if(J.timeSliderCapRight!==undefined){_css(J.timeSliderCapRight,{left:X+(V.width-O-B)})}_css(P,W);_css(J.elements,V);_css(J.background,V);o();return W}function k(Z){if(J.volumeSliderRail!==undefined){var X=isNaN(Z.volume/100)?1:Z.volume/100;var Y=parseInt(J.volumeSliderRail.style.width.replace("px",""),10);var V=isNaN(Math.round(Y*X))?0:Math.round(Y*X);var aa=parseInt(J.volumeSliderRail.style.right.replace("px",""),10);var W=i.skin.getSkinElement("controlbar","volumeSliderCapLeft")===undefined?0:i.skin.getSkinElement("controlbar","volumeSliderCapLeft").width;_css(J.volumeSliderProgress,{width:V,left:W});if(J.volumeSliderCapLeft!==undefined){_css(J.volumeSliderCapLeft,{left:0})}}}function q(){H();G();o();n=true;C();R();P.style.opacity=A.idlehide?0:1}q();return this}})(jwplayer);(function(b){var a=["width","height","state","playlist","item","position","buffer","duration","volume","mute","fullscreen"];b.html5.controller=function(t,r,e,q){var w=t;var y=e;var d=q;var k=r;var A=true;var c=-1;var u=(y.config.debug!==undefined)&&(y.config.debug.toString().toLowerCase()=="console");var i=new b.html5.eventdispatcher(k.id,u);b.utils.extend(this,i);function m(D){i.sendEvent(D.type,D)}y.addGlobalListener(m);function p(){try{if(y.playlist[y.item].levels[0].file.length>0){if(A||y.state==b.api.events.state.IDLE){y.addEventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL,function(){y.getMedia().play()});y.addEventListener(b.api.events.JWPLAYER_MEDIA_TIME,function(E){if(E.position>=y.playlist[y.item].start&&c>=0){y.playlist[y.item].start=c;c=-1}});if(y.config.repeat){y.addEventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE,function(E){setTimeout(n,25)})}y.getMedia().load(y.playlist[y.item]);A=false}else{if(y.state==b.api.events.state.PAUSED){y.getMedia().play()}}}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function B(){try{if(y.playlist[y.item].levels[0].file.length>0){switch(y.state){case b.api.events.state.PLAYING:case b.api.events.state.BUFFERING:y.getMedia().pause();break}}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function x(D){try{if(y.playlist[y.item].levels[0].file.length>0){if(typeof D!="number"){D=parseFloat(D)}switch(y.state){case b.api.events.state.IDLE:if(c<0){c=y.playlist[y.item].start;y.playlist[y.item].start=D}p();break;case b.api.events.state.PLAYING:case b.api.events.state.PAUSED:case b.api.events.state.BUFFERING:y.getMedia().seek(D);break}}return true}catch(E){i.sendEvent(b.api.events.JWPLAYER_ERROR,E)}return false}function j(){try{if(y.playlist[y.item].levels[0].file.length>0&&y.state!=b.api.events.state.IDLE){y.getMedia().stop()}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function g(){try{if(y.playlist[y.item].levels[0].file.length>0){if(y.config.shuffle){o(s())}else{if(y.item+1==y.playlist.length){o(0)}else{o(y.item+1)}}}if(y.state!=b.api.events.state.PLAYING&&y.state!=b.api.events.state.BUFFERING){p()}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function f(){try{if(y.playlist[y.item].levels[0].file.length>0){if(y.config.shuffle){o(s())}else{if(y.item===0){o(y.playlist.length-1)}else{o(y.item-1)}}}if(y.state!=b.api.events.state.PLAYING&&y.state!=b.api.events.state.BUFFERING){p()}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function s(){var D=null;if(y.playlist.length>1){while(D===null){D=Math.floor(Math.random()*y.playlist.length);if(D==y.item){D=null}}}else{D=0}return D}function o(E){y.resetEventListeners();y.addGlobalListener(m);try{if(y.playlist[E].levels[0].file.length>0){var F=y.state;if(F!==b.api.events.state.IDLE){j()}y.item=E;A=true;y.setActiveMediaProvider(y.playlist[y.item]);i.sendEvent(b.api.events.JWPLAYER_PLAYLIST_ITEM,{index:E});if(F==b.api.events.state.PLAYING||F==b.api.events.state.BUFFERING||y.config.chromeless||e.config.autostart===true){p()}}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function z(E){try{switch(typeof(E)){case"number":y.getMedia().volume(E);break;case"string":y.getMedia().volume(parseInt(E,10));break}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function l(E){try{if(typeof E=="undefined"){y.getMedia().mute(!y.mute)}else{if(E.toString().toLowerCase()=="true"){y.getMedia().mute(true)}else{y.getMedia().mute(false)}}return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function h(E,D){try{y.width=E;y.height=D;d.resize(E,D);i.sendEvent(b.api.events.JWPLAYER_RESIZE,{width:y.width,height:y.height});return true}catch(F){i.sendEvent(b.api.events.JWPLAYER_ERROR,F)}return false}function v(E){try{if(typeof E=="undefined"){y.fullscreen=!y.fullscreen;d.fullscreen(!y.fullscreen)}else{if(E.toString().toLowerCase()=="true"){y.fullscreen=true;d.fullscreen(true)}else{y.fullscreen=false;d.fullscreen(false)}}i.sendEvent(b.api.events.JWPLAYER_RESIZE,{width:y.width,height:y.height});i.sendEvent(b.api.events.JWPLAYER_FULLSCREEN,{fullscreen:E});return true}catch(D){i.sendEvent(b.api.events.JWPLAYER_ERROR,D)}return false}function C(D){try{j();y.loadPlaylist(D);o(y.item);return true}catch(E){i.sendEvent(b.api.events.JWPLAYER_ERROR,E)}return false}b.html5.controller.repeatoptions={LIST:"LIST",ALWAYS:"ALWAYS",SINGLE:"SINGLE",NONE:"NONE"};function n(){y.resetEventListeners();y.addGlobalListener(m);switch(y.config.repeat.toUpperCase()){case b.html5.controller.repeatoptions.SINGLE:p();break;case b.html5.controller.repeatoptions.ALWAYS:if(y.item==y.playlist.length-1&&!y.config.shuffle){o(0);p()}else{g()}break;case b.html5.controller.repeatoptions.LIST:if(y.item==y.playlist.length-1&&!y.config.shuffle){o(0)}else{g()}break}}this.play=p;this.pause=B;this.seek=x;this.stop=j;this.next=g;this.prev=f;this.item=o;this.setVolume=z;this.setMute=l;this.resize=h;this.setFullscreen=v;this.load=C}})(jwplayer);(function(a){a.html5.defaultSkin=function(){this.text='<?xml version="1.0" ?><skin author="LongTail Video" name="Five" version="1.0"><settings><setting name="backcolor" value="0xFFFFFF"/><setting name="frontcolor" value="0x000000"/><setting name="lightcolor" value="0x000000"/><setting name="screencolor" value="0x000000"/></settings><components><component name="controlbar"><settings><setting name="margin" value="20"/><setting name="fontsize" value="11"/></settings><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFJJREFUeNrslLENwAAIwxLU/09j5AiOgD5hVQzNAVY8JK4qEfHMIKBnd2+BQlBINaiRtL/aV2rdzYBsM6CIONbI1NZENTr3RwdB2PlnJgJ6BRgA4hwu5Qg5iswAAAAASUVORK5CYII="/><element name="capLeft" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="capRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="divider" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="playButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhJREFUeNpiYqABYBo1dNRQ+hr6H4jvA3E8NS39j4SpZvh/LJig4YxEGEqy3kET+w+AOGFQRhTJhrEQkGcczfujhg4CQwECDADpTRWU/B3wHQAAAABJRU5ErkJggg=="/><element name="pauseButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiYBgFo2DwA0YC8v/R1P4nRu+ooaOGUtnQUTAKhgIACDAAFCwQCfAJ4gwAAAAASUVORK5CYII="/><element name="prevButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNpiYBgFo2Dog/9QDAPyQHweTYwiQ/2B+D0Wi8g2tB+JTdBQRiIMJVkvEy0iglhDF9Aq9uOpHVEwoE+NJDUKRsFgAAABBgDe2hqZcNNL0AAAAABJRU5ErkJggg=="/><element name="nextButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAElJREFUeNpiYBgFo2Dog/9AfB6I5dHE/lNqKAi/B2J/ahsKw/3EGMpIhKEk66WJoaR6fz61IyqemhEFSlL61ExSo2AUDAYAEGAAiG4hj+5t7M8AAAAASUVORK5CYII="/><element name="timeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpiYBgFo2AU0Bwwzluw+D8tLWARFhKiqQ9YuLg4aWsBGxs7bS1gZ6e5BWyjSX0UjIKhDgACDABlYQOGh5pYywAAAABJRU5ErkJggg=="/><element name="timeSliderBuffer" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFo2AU0Bww1jc0/aelBSz8/Pw09QELOzs7bS1gY2OjrQWsrKy09gHraFIfBaNgqAOAAAMAvy0DChXHsZMAAAAASUVORK5CYII="/><element name="timeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiYBgFo2AU0BwwAvF/WlrARGsfjFow8BaMglEwCugAAAIMAOHfAQunR+XzAAAAAElFTkSuQmCC"/><element name="timeSliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAICAYAAAA870V8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiZICA/yCCiQEJUJcDEGAAY0gBD1/m7Q0AAAAASUVORK5CYII="/><element name="muteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiYBgFIw3MB+L/5Gj8j6yRiRTFyICJXHfTXyMLAXlGati4YDRFDj8AEGAABk8GSqqS4CoAAAAASUVORK5CYII="/><element name="unmuteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFgxz8p7bm+cQa+h8LHy7GhEcjIz4bmAjYykiun/8j0fakGPIfTfPgiSr6aB4FVAcAAQYAWdwR1G1Wd2gAAAAASUVORK5CYII="/><element name="volumeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGpJREFUeNpi/P//PwM9ABMDncCoRYPfIqqDZcuW1UPp/6AUDcNM1DQYKtRAlaAj1mCSLSLXYIIWUctgDItoZfDA5aOoqKhGEANIM9LVR7SymGDQUctikuOIXkFNdhHEOFrDjlpEd4sAAgwAriRMub95fu8AAAAASUVORK5CYII="/><element name="volumeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi/P//PwM9ABMDncCoRYPfIlqAeij9H5SiYZiqBqPTlFqE02BKLSLaYFItIttgQhZRzWB8FjENiuRJ7aAbsMQwYMl7wDIsWUUQ42gNO2oR3S0CCDAAKhKq6MLLn8oAAAAASUVORK5CYII="/><element name="fullscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE5JREFUeNpiYBgFo2DQA0YC8v/xqP1PjDlMRDrEgUgxkgHIlfZoriVGjmzLsLFHAW2D6D8eA/9Tw7L/BAwgJE90PvhPpNgoGAVDEQAEGAAMdhTyXcPKcAAAAABJRU5ErkJggg=="/><element name="normalscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYBgFo2DIg/9UUkOUAf8JiFFsyX88fJyAkcQgYMQjNkzBoAgiezyRbE+tFGSPxQJ7auYBmma0UTAKBhgABBgAJAEY6zON61sAAAAASUVORK5CYII="/></elements></component><component name="display"><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC"/><element name="playIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg=="/><element name="muteIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNrs1jEOgCAMBVAg7t5/8qaoIy4uoobyXsLCxA+0NCUAAADGUWvdQoQ41x4ixNBB2hBvBskdD3w5ZCkl3+33VqI0kjBBlh9rp+uTcyOP33TnolfsU85XX3yIRpQph8ZQY3wTZtU5AACASA4BBgDHoVuY1/fvOQAAAABJRU5ErkJggg=="/><element name="errorIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrsl+1twjAQhsHq/7BBYQLYIBmBDcoGMAIjtBPQTcII2SDtBDBBwrU6pGsUO7YbO470PtKJkz9iH++d4ywWAAAAAABgljRNsyWr2bZzDuJG1rLdZhcMbTjrBCGDyUKsqQLFciJb9bSvuG/WagRVRUVUI6gqy5HVeKWfSgRyJruKIU//TrZTSn2nmlaXThrloi/v9F2STC1W4+Aw5cBzkquRc09bofFNc6YLxEON0VUZS5FPTftO49vMjRsIF3RhOGr7/D/pJw+FKU+q0vDyq8W42jCunDqI3LC5XxNj2wHLU1XjaRnb0Lhykhqhhd8MtSF5J9tbjCv4mXGvKJz/65FF/qJryyaaIvzP2QRxZTX2nTuXjvV/VPFSwyLnW7mpH99yTh1FEVro6JBSd40/pMrRdV8vPtcKl28T2pT8TnFZ4yNosct3Q0io6JfBiz1FlGdqVQH3VHnepAEAAAAAADDzEGAAcTwB10jWgxcAAAAASUVORK5CYII="/><element name="bufferIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAuhJREFUeNrsWr9rU1EUznuNGqvFQh1ULOhiBx0KDtIuioO4pJuik3FxFfUPaAV1FTdx0Q5d2g4FFxehTnEpZHFoBy20tCIWtGq0TZP4HfkeHB5N8m6Sl/sa74XDybvv3vvOd8/Pe4lXrVZT3dD8VJc0B8QBcUAcEAfESktHGeR5XtMfqFQq/f92zPe/NbtGlKTdCY30kuxrpMGO94BlQCXs+rbh3ONgA6BlzP1p20d80gEI5hmA2A92Qua1Q2PtAFISM+bvjMG8U+Q7oA3rQGASwrYCU6WpNdLGYbA+Pq5jjXIiwi8EEa2UDbQSaKOIuV+SlkcCrfjY8XTI9EpKGwP0C2kru2hLtHqa4zoXtZRWyvi4CLwv9Opr6Hkn6A9HKgEANsQ1iqC3Ub/vRUk2JgmRkatK36kVrnt0qObunwUdUUMXMWYpakJsO5Am8tAw2GBIgwWA+G2S2dMpiw0gDioQRQJoKhRb1QiDwlHZUABYbaXWsm5ae6loTE4ZDxN4CZar8foVzOJ2iyZ2kWF3t7YIevffaMT5yJ70kQb2fQ1sE5SHr2wazs2wgMxgbsEKEAgxAvZUJbQLBGTSBMgNrncJbA6AljtS/eKDJ0Ez+DmrQEzXS2h1Ck25kAg0IZcUOaydCy4sYnN2fOA+2AP16gNoHALlQ+fwH7XO4CxLenUpgj4xr6ugY2roPMbMx+Xs18m/E8CVEIhxsNeg83XWOAN6grG3lGbk8uE5fr4B/WH3cJw+co/l9nTYsSGYCJ/lY5/qv0thn6nrIWmjeJcPSnWOeY++AkF8tpJHIMAUs/MaBBpj3znZfQo5psY+ZrG4gv5HickjEOymKjEeRpgyST6IuZcTcWbnjcgdPi5ghxciRKsl1lDSsgwA1i8fssonJgzmTSqfGUkCENndNdAL7PS6QQ7ZYISTo+1qq0LEWjTWcvY4isa4z+yfQB+7ooyHVg5RI7/i1Ijn/vnggDggDogD4oC00P4KMACd/juEHOrS4AAAAABJRU5ErkJggg=="/></elements></component><component name="dock"><elements><element name="button" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUeNrs0cEJACAQA8Eofu0fu/W6EM5ZSAFDRpKTBs00CQQEBAQEBAQEBAQEBAQEBATkK8iqbY+AgICAgICAgICAgICAgICAgIC86QowAG5PAQzEJ0lKAAAAAElFTkSuQmCC"/></elements></component><component name="playlist"><elements><element name="item" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNrs2NEJwCAMBcBYuv/CFuIE9VN47WWCR7iocXR3pdWdGPqqwIoMjYfQeAiNh9B4JHc6MHQVHnjggQceeOCBBx77TifyeOY0iHi8DqIdEY8dD5cL094eePzINB5CO/LwcOTptNB4CP25L4TIbZzpU7UEGAA5wz1uF5rF9AAAAABJRU5ErkJggg=="/><element name="sliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNrsy6ENACAMAMHClp2wYxZLAg5Fcu9e3OjuOKqqfTMzbs14CIZhGIZhGIZhGP4VLwEGAK/BBnVFpB0oAAAAAElFTkSuQmCC"/><element name="sliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrsy7ENACAMBLE8++8caFFKKiRffU53112SGs3ttOohGIZhGIZhGIZh+Fe8BRgAiaUGde6NOSEAAAAASUVORK5CYII="/></elements></component></components></skin>';this.xml=null;if(window.DOMParser){parser=new DOMParser();this.xml=parser.parseFromString(this.text,"text/xml")}else{this.xml=new ActiveXObject("Microsoft.XMLDOM");this.xml.async="false";this.xml.loadXML(this.text)}return this}})(jwplayer);(function(a){_css=a.utils.css;_hide=function(b){_css(b,{display:"none"})};_show=function(b){_css(b,{display:"block"})};a.html5.display=function(o,z){var r={icons:true};var j=a.utils.extend({},r,z);var w=o;var d={};var f;var A;var k;var x;var y;var p;var i;var n=w.skin.getComponentSettings("display").bufferrotation===undefined?15:parseInt(w.skin.getComponentSettings("display").bufferrotation,10);var e=w.skin.getComponentSettings("display").bufferinterval===undefined?100:parseInt(w.skin.getComponentSettings("display").bufferinterval,10);var c={display:{style:{cursor:"pointer",top:0,left:0,overflow:"hidden"},click:u},display_icon:{style:{cursor:"pointer",position:"absolute",top:((w.skin.getSkinElement("display","background").height-w.skin.getSkinElement("display","playIcon").height)/2),left:((w.skin.getSkinElement("display","background").width-w.skin.getSkinElement("display","playIcon").width)/2),border:0,margin:0,padding:0,zIndex:3}},display_iconBackground:{style:{cursor:"pointer",position:"absolute",top:((A-w.skin.getSkinElement("display","background").height)/2),left:((f-w.skin.getSkinElement("display","background").width)/2),border:0,backgroundImage:(["url(",w.skin.getSkinElement("display","background").src,")"]).join(""),width:w.skin.getSkinElement("display","background").width,height:w.skin.getSkinElement("display","background").height,margin:0,padding:0,zIndex:2}},display_image:{style:{display:"none",width:f,height:A,position:"absolute",cursor:"pointer",left:0,top:0,margin:0,padding:0,textDecoration:"none",zIndex:1}},display_text:{style:{zIndex:4,position:"relative",opacity:0.8,backgroundColor:parseInt("000000",16),color:parseInt("ffffff",16),textAlign:"center",fontFamily:"Arial,sans-serif",padding:"0 5px",fontSize:14}}};w.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,l);w.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE,l);w.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM,l);w.jwAddEventListener(a.api.events.JWPLAYER_ERROR,t);B();function B(){d.display=s("div","display");d.display_text=s("div","display_text");d.display.appendChild(d.display_text);d.display_image=s("img","display_image");d.display_image.onerror=function(C){_hide(d.display_image)};d.display_image.onload=m;d.display_icon=s("div","display_icon");d.display_iconBackground=s("div","display_iconBackground");d.display.appendChild(d.display_image);d.display_iconBackground.appendChild(d.display_icon);d.display.appendChild(d.display_iconBackground);b()}this.getDisplayElement=function(){return d.display};this.resize=function(D,C){f=D;A=C;_css(d.display,{width:D,height:C});_css(d.display_text,{width:(D-10),top:((A-d.display_text.getBoundingClientRect().height)/2)});_css(d.display_iconBackground,{top:((A-w.skin.getSkinElement("display","background").height)/2),left:((f-w.skin.getSkinElement("display","background").width)/2)});h();l({})};function m(C){k=d.display_image.naturalWidth;x=d.display_image.naturalHeight;h()}function h(){a.utils.stretch(w.jwGetStretching(),d.display_image,f,A,k,x)}function s(C,E){var D=document.createElement(C);D.id=w.id+"_jwplayer_"+E;_css(D,c[E].style);return D}function b(){for(var C in d){if(c[C].click!==undefined){d[C].onclick=c[C].click}}}function u(C){if(typeof C.preventDefault!="undefined"){C.preventDefault()}else{C.returnValue=false}if(w.jwGetState()!=a.api.events.state.PLAYING){w.jwPlay()}else{w.jwPause()}}function g(C){if(i||!j.icons){q();return}_show(d.display_iconBackground);d.display_icon.style.backgroundImage=(["url(",w.skin.getSkinElement("display",C).src,")"]).join("");_css(d.display_icon,{display:"block",width:w.skin.getSkinElement("display",C).width,height:w.skin.getSkinElement("display",C).height,top:(w.skin.getSkinElement("display","background").height-w.skin.getSkinElement("display",C).height)/2,left:(w.skin.getSkinElement("display","background").width-w.skin.getSkinElement("display",C).width)/2});if(w.skin.getSkinElement("display",C+"Over")!==undefined){d.display_icon.onmouseover=function(D){d.display_icon.style.backgroundImage=["url(",w.skin.getSkinElement("display",C+"Over").src,")"].join("")};d.display_icon.onmouseout=function(D){d.display_icon.style.backgroundImage=["url(",w.skin.getSkinElement("display",C).src,")"].join("")}}else{d.display_icon.onmouseover=null;d.display_icon.onmouseout=null}}function q(){_hide(d.display_icon);_hide(d.display_iconBackground)}function t(C){i=true;q();d.display_text.innerHTML=C.error;_show(d.display_text);d.display_text.style.top=((A-d.display_text.getBoundingClientRect().height)/2)+"px"}function v(){var C=d.display_image;d.display_image=s("img","display_image");d.display_image.onerror=function(D){_hide(d.display_image)};d.display_image.onload=m;d.display.replaceChild(d.display_image,C)}function l(C){if((C.type==a.api.events.JWPLAYER_PLAYER_STATE||C.type==a.api.events.JWPLAYER_PLAYLIST_ITEM)&&i){i=false;_hide(d.display_text)}if(p!==undefined){clearInterval(p);p=null;a.utils.animations.rotate(d.display_icon,0)}switch(w.jwGetState()){case a.api.events.state.BUFFERING:g("bufferIcon");y=0;p=setInterval(function(){y+=n;a.utils.animations.rotate(d.display_icon,y%360)},e);g("bufferIcon");break;case a.api.events.state.PAUSED:_css(d.display_image,{background:"transparent no-repeat center center"});g("playIcon");break;case a.api.events.state.IDLE:if(w.jwGetPlaylist()[w.jwGetItem()].image){_css(d.display_image,{display:"block"});d.display_image.src=a.utils.getAbsolutePath(w.jwGetPlaylist()[w.jwGetItem()].image)}else{v()}g("playIcon");break;default:if(w.jwGetMute()){v();g("muteIcon")}else{v();_hide(d.display_iconBackground);_hide(d.display_icon)}break}}return this}})(jwplayer);(function(a){a.html5.dock=function(g,c){function f(){return{align:a.html5.view.positions.RIGHT}}var k=a.utils.extend({},f(),c);if(k.align=="FALSE"){return}var h={};var b=[];var d;var e;var j=document.createElement("div");j.id=g.id+"_jwplayer_dock";this.getDisplayElement=function(){return j};this.setButton=function(o,l,m,n){if(!l&&h[o]){a.utils.arrays.remove(b,o);j.removeChild(h[o].div);delete h[o]}else{if(l){if(!h[o]){h[o]={}}h[o].handler=l;h[o].outGraphic=m;h[o].overGraphic=n;if(!h[o].div){b.push(o);h[o].div=document.createElement("div");h[o].div.style.position="relative";j.appendChild(h[o].div);h[o].div.appendChild(document.createElement("img"));h[o].div.childNodes[0].style.position="absolute";h[o].div.childNodes[0].style.left=0;h[o].div.childNodes[0].style.top=0;h[o].div.childNodes[0].style.zIndex=10;h[o].div.childNodes[0].style.cursor="pointer";h[o].div.appendChild(document.createElement("img"));h[o].div.childNodes[1].style.position="absolute";h[o].div.childNodes[1].style.left=0;h[o].div.childNodes[1].style.top=0;if(g.skin.getSkinElement("dock","button")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","button").src}h[o].div.childNodes[1].style.zIndex=9;h[o].div.childNodes[1].style.cursor="pointer";h[o].div.onmouseover=function(){if(h[o].overGraphic){h[o].div.childNodes[0].src=h[o].overGraphic}if(g.skin.getSkinElement("dock","buttonOver")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","buttonOver").src}};h[o].div.onmouseout=function(){if(h[o].outGraphic){h[o].div.childNodes[0].src=h[o].outGraphic}if(g.skin.getSkinElement("dock","button")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","button").src}};if(h[o].overGraphic){h[o].div.childNodes[0].src=h[o].overGraphic}if(h[o].outGraphic){h[o].div.childNodes[0].src=h[o].outGraphic}if(g.skin.getSkinElement("dock","button")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","button").src}}if(l){h[o].div.onclick=function(p){p.preventDefault();a(g.id).callback(o);if(h[o].overGraphic){h[o].div.childNodes[0].src=h[o].overGraphic}if(g.skin.getSkinElement("dock","button")){h[o].div.childNodes[1].src=g.skin.getSkinElement("dock","button").src}}}}}i(d,e)};function i(n,l){d=n;e=l;if(b.length>0){var p=10;var r=n-g.skin.getSkinElement("dock","button").width-p;var o=p;var q=-1;if(k.align==a.html5.view.positions.LEFT){q=1;r=p}for(var m=0;m<b.length;m++){var s=Math.floor(o/l);if((o+g.skin.getSkinElement("dock","button").height+p)>((s+1)*l)){o=((s+1)*l)+p;s=Math.floor(o/l)}h[b[m]].div.style.top=(o%l)+"px";h[b[m]].div.style.left=(r+(g.skin.getSkinElement("dock","button").width+p)*s*q)+"px";o+=g.skin.getSkinElement("dock","button").height+p}}}this.resize=i;return this}})(jwplayer);(function(a){a.html5.eventdispatcher=function(d,b){var c=new a.events.eventdispatcher(b);a.utils.extend(this,c);this.sendEvent=function(e,f){if(f===undefined){f={}}a.utils.extend(f,{id:d,version:a.version,type:e});c.sendEvent(e,f)}}})(jwplayer);(function(a){var b={prefix:"http://l.longtailvideo.com/html5/",file:"logo.png",link:"http://www.longtailvideo.com/players/jw-flv-player/",margin:8,out:0.5,over:1,timeout:3,hide:true,position:"bottom-left"};_css=a.utils.css;a.html5.logo=function(l,m){var r=l;var n;var i;var c;j();function j(){p();d();f()}function p(){if(b.prefix){var t=l.version.split(/\W/).splice(0,2).join("/");if(b.prefix.indexOf(t)<0){b.prefix+=t+"/"}}if(m.position==a.html5.view.positions.OVER){m.position=b.position}i=a.utils.extend({},b)}function d(){c=document.createElement("img");c.id=r.id+"_jwplayer_logo";c.style.display="none";c.onload=function(t){_css(c,q());r.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,s);e()};if(!i.file){return}if(i.file.indexOf("http://")===0){c.src=i.file}else{c.src=i.prefix+i.file}}if(!i.file){return}this.resize=function(u,t){};this.getDisplayElement=function(){return c};function f(){if(i.link){c.onmouseover=h;c.onmouseout=e;c.onclick=o}else{this.mouseEnabled=false}}function o(t){if(typeof t!="undefined"){t.stopPropagation()}r.jwPause();r.jwSetFullscreen(false);if(i.link){window.open(i.link,"_blank")}return}function e(t){if(i.link){c.style.opacity=i.out}return}function h(t){if(i.hide){c.style.opacity=i.over}return}function q(){var v={textDecoration:"none",position:"absolute",cursor:"pointer"};v.display=i.hide?"none":"block";var u=i.position.toLowerCase().split("-");for(var t in u){v[u[t]]=i.margin}return v}function k(){if(i.hide){c.style.display="block";c.style.opacity=0;a.utils.fadeTo(c,i.out,0.1,parseFloat(c.style.opacity));n=setTimeout(function(){g()},i.timeout*1000)}}function g(){if(i.hide){a.utils.fadeTo(c,0,0.1,parseFloat(c.style.opacity))}}function s(t){if(t.newstate==a.api.events.state.BUFFERING){clearTimeout(n);k()}}return this}})(jwplayer);(function(a){var c={ended:a.api.events.state.IDLE,playing:a.api.events.state.PLAYING,pause:a.api.events.state.PAUSED,buffering:a.api.events.state.BUFFERING};var b=a.utils.css;a.html5.mediavideo=function(f,D){var H={abort:t,canplay:m,canplaythrough:m,durationchange:q,emptied:t,ended:m,error:l,loadeddata:q,loadedmetadata:q,loadstart:m,pause:m,play:K,playing:m,progress:A,ratechange:t,seeked:m,seeking:m,stalled:m,suspend:m,timeupdate:K,volumechange:t,waiting:m,canshowcurrentframe:t,dataunavailable:t,empty:t,load:e,loadedfirstframe:t};var I=new a.html5.eventdispatcher();a.utils.extend(this,I);var h=f;var x=D;var E;var G;var d=a.api.events.state.IDLE;var B=null;var n;var g=0;var z=false;var r=false;var M;var L;var i=[];var N;var C=false;function v(){return d}function e(O){}function t(O){}function m(O){if(c[O.type]){s(c[O.type])}}function s(O){if(C){return}if(n){O=a.api.events.state.IDLE}if(O==a.api.events.state.PAUSED&&d==a.api.events.state.IDLE){return}if(O==a.api.events.state.PLAYING&&d==a.api.events.state.IDLE){s(a.api.events.state.BUFFERING);I.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:h.buffer});y();return}if(d!=O){var P=d;h.state=O;d=O;var Q=false;if(O==a.api.events.state.IDLE){p();if(h.position>=h.duration&&(h.position||h.duration)){Q=true}if(x.style.display!="none"&&!h.config.chromeless){x.style.display="none"}}I.sendEvent(a.api.events.JWPLAYER_PLAYER_STATE,{oldstate:P,newstate:O});if(Q){I.sendEvent(a.api.events.JWPLAYER_MEDIA_COMPLETE)}}n=false}function q(O){var P={height:O.target.videoHeight,width:O.target.videoWidth,duration:Math.round(O.target.duration*10)/10};if(h.duration===0||isNaN(h.duration)){h.duration=Math.round(O.target.duration*10)/10}h.playlist[h.item]=a.utils.extend(h.playlist[h.item],P);I.sendEvent(a.api.events.JWPLAYER_MEDIA_META,{metadata:P})}function K(P){if(n){return}if(P!==undefined&&P.target!==undefined){if(h.duration===0||isNaN(h.duration)){h.duration=Math.round(P.target.duration*10)/10}if(!z&&x.readyState>0){s(a.api.events.state.PLAYING)}if(d==a.api.events.state.PLAYING){if(!z&&x.readyState>0){z=true;try{x.currentTime=h.playlist[h.item].start}catch(O){}x.volume=h.volume/100;x.muted=h.mute}h.position=Math.round(P.target.currentTime*10)/10;I.sendEvent(a.api.events.JWPLAYER_MEDIA_TIME,{position:P.target.currentTime,duration:P.target.duration})}}A(P)}function y(){if(E===false&&d==a.api.events.state.BUFFERING){I.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER_FULL);E=true}}function F(){var O=(i[i.length-1]-i[0])/i.length;N=setTimeout(function(){if(!G){A({lengthComputable:true,loaded:1,total:1})}},O*10)}function A(Q){var P,O;if(Q!==undefined&&Q.lengthComputable&&Q.total){o();P=Q.loaded/Q.total*100;O=P/100*(h.duration-x.currentTime);if(50<P&&!G){clearTimeout(N);F()}}else{if((x.buffered!==undefined)&&(x.buffered.length>0)){maxBufferIndex=0;if(maxBufferIndex>=0){P=x.buffered.end(maxBufferIndex)/x.duration*100;O=x.buffered.end(maxBufferIndex)-x.currentTime}}}y();if(!G){if(P==100&&G===false){G=true}if(P!==null&&(P>h.buffer)){h.buffer=Math.round(P);I.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:Math.round(P)})}}}function w(){if(B===null){B=setInterval(function(){K()},100)}}function p(){clearInterval(B);B=null}function l(Q){var P="There was an error: ";if((Q.target.error&&Q.target.tagName.toLowerCase()=="video")||Q.target.parentNode.error&&Q.target.parentNode.tagName.toLowerCase()=="video"){var O=Q.target.error===undefined?Q.target.parentNode.error:Q.target.error;switch(O.code){case O.MEDIA_ERR_ABORTED:P="You aborted the video playback: ";break;case O.MEDIA_ERR_NETWORK:P="A network error caused the video download to fail part-way: ";break;case O.MEDIA_ERR_DECODE:P="The video playback was aborted due to a corruption problem or because the video used features your browser did not support: ";break;case O.MEDIA_ERR_SRC_NOT_SUPPORTED:P="The video could not be loaded, either because the server or network failed or because the format is not supported: ";break;default:P="An unknown error occurred: ";break}}else{if(Q.target.tagName.toLowerCase()=="source"){L--;if(L>0){return}P="The video could not be loaded, either because the server or network failed or because the format is not supported: "}else{a.utils.log("Erroneous error received. Continuing...");return}}u();P+=j();C=true;I.sendEvent(a.api.events.JWPLAYER_ERROR,{error:P});return}function j(){var Q="";for(var P in M.levels){var O=M.levels[P];var R=x.ownerDocument.createElement("source");Q+=a.utils.getAbsolutePath(O.file);if(P<(M.levels.length-1)){Q+=", "}}return Q}this.getDisplayElement=function(){return x};this.play=function(){if(d!=a.api.events.state.PLAYING){if(x.style.display!="block"){x.style.display="block"}x.play();w();if(E){s(a.api.events.state.PLAYING)}}};this.pause=function(){x.pause();s(a.api.events.state.PAUSED)};this.seek=function(O){if(!(h.duration===0||isNaN(h.duration))&&!(h.position===0||isNaN(h.position))){x.currentTime=O;x.play()}};function u(){x.pause();p();h.position=0;n=true;s(a.api.events.state.IDLE)}this.stop=u;this.volume=function(O){x.volume=O/100;h.volume=O;I.sendEvent(a.api.events.JWPLAYER_MEDIA_VOLUME,{volume:Math.round(O)})};this.mute=function(O){x.muted=O;h.mute=O;I.sendEvent(a.api.events.JWPLAYER_MEDIA_MUTE,{mute:O})};this.resize=function(P,O){if(false){b(x,{width:P,height:O})}I.sendEvent(a.api.events.JWPLAYER_MEDIA_RESIZE,{fullscreen:h.fullscreen,width:P,hieght:O})};this.fullscreen=function(O){if(O===true){this.resize("100%","100%")}else{this.resize(h.config.width,h.config.height)}};this.load=function(O){J(O);I.sendEvent(a.api.events.JWPLAYER_MEDIA_LOADED);E=false;G=false;z=false;if(!h.config.chromeless&&!r){i=[];o();s(a.api.events.state.BUFFERING);setTimeout(function(){K()},25)}};function o(){var O=new Date().getTime();i.push(O)}this.hasChrome=function(){return r};function J(V){h.duration=V.duration;r=false;M=V;var Q=document.createElement("video");Q.preload="none";C=false;L=0;for(var P=0;P<V.levels.length;P++){var O=V.levels[P];if(a.utils.isYouTube(O.file)){delete Q;k(O.file);return}var R;if(O.type===undefined){var U=a.utils.extension(O.file);if(a.utils.extensionmap[U]!==undefined&&a.utils.extensionmap[U].html5!==undefined){R=a.utils.extensionmap[U].html5}}else{R=O.type}if(!R||Q.canPlayType(R)){var T=x.ownerDocument.createElement("source");T.src=a.utils.getAbsolutePath(O.file);if(R&&!a.utils.isLegacyAndroid()){T.type=R}L++;Q.appendChild(T)}}if(L===0){C=true;I.sendEvent(a.api.events.JWPLAYER_ERROR,{error:"The video could not be loaded because the format is not supported by your browser: "+j()})}if(h.config.chromeless){Q.poster=a.utils.getAbsolutePath(V.image);Q.controls="controls"}Q.style.top=x.style.top;Q.style.left=x.style.left;Q.style.width=x.style.width;Q.style.height=x.style.height;Q.style.zIndex=x.style.zIndex;Q.onload=e;Q.volume=0;x.parentNode.replaceChild(Q,x);Q.id=x.id;x=Q;for(var S in H){x.addEventListener(S,function(W){if(W.target.parentNode!==null){H[W.type](W)}},true)}}function k(S){var P=document.createElement("object");S=["http://www.youtube.com/v/",S.replace(/^[^v]+v.(.{11}).*/,"$1"),"&hl=en_US&fs=1&autoplay=1"].join("");var V={movie:S,allowFullScreen:"true",allowscriptaccess:"always"};for(var O in V){var T=document.createElement("param");T.name=O;T.value=V[O];P.appendChild(T)}var U=document.createElement("embed");var Q={src:S,type:"application/x-shockwave-flash",allowscriptaccess:"always",allowfullscreen:"true",width:document.getElementById(f.id).style.width,height:document.getElementById(f.id).style.height};for(var R in Q){U[R]=Q[R]}P.appendChild(U);P.style.position=x.style.position;P.style.top=x.style.top;P.style.left=x.style.left;P.style.width=document.getElementById(f.id).style.width;P.style.height=document.getElementById(f.id).style.height;P.style.zIndex=2147483000;x.parentNode.replaceChild(P,x);P.id=x.id;x=P;r=true}this.embed=J;return this}})(jwplayer);(function(jwplayer){var _configurableStateVariables=["width","height","start","duration","volume","mute","fullscreen","item","plugins","stretching"];jwplayer.html5.model=function(api,container,options){var _api=api;var _container=container;var _model={id:_container.id,playlist:[],state:jwplayer.api.events.state.IDLE,position:0,buffer:0,config:{width:480,height:320,item:-1,skin:undefined,file:undefined,image:undefined,start:0,duration:0,bufferlength:5,volume:90,mute:false,fullscreen:false,repeat:"none",stretching:jwplayer.utils.stretching.UNIFORM,autostart:false,debug:undefined,screencolor:undefined}};var _media;var _eventDispatcher=new jwplayer.html5.eventdispatcher();var _components=["display","logo","controlbar","dock"];jwplayer.utils.extend(_model,_eventDispatcher);for(var option in options){if(typeof options[option]=="string"){var type=/color$/.test(option)?"color":null;options[option]=jwplayer.utils.typechecker(options[option],type)}var config=_model.config;var path=option.split(".");for(var edge in path){if(edge==path.length-1){config[path[edge]]=options[option]}else{if(config[path[edge]]===undefined){config[path[edge]]={}}config=config[path[edge]]}}}for(var index in _configurableStateVariables){var configurableStateVariable=_configurableStateVariables[index];_model[configurableStateVariable]=_model.config[configurableStateVariable]}var pluginorder=_components.concat([]);if(_model.plugins!==undefined){if(typeof _model.plugins=="string"){var userplugins=_model.plugins.split(",");for(var userplugin in userplugins){if(typeof userplugins[userplugin]=="string"){pluginorder.push(userplugins[userplugin].replace(/^\s+|\s+$/g,""))}}}}if(typeof _model.config.chromeless=="undefined"&&jwplayer.utils.isIOS()){_model.config.chromeless=true}if(_model.config.chromeless){pluginorder=["logo"]}_model.plugins={order:pluginorder,config:{},object:{}};if(typeof _model.config.components!="undefined"){for(var component in _model.config.components){_model.plugins.config[component]=_model.config.components[component]}}for(var pluginIndex in _model.plugins.order){var pluginName=_model.plugins.order[pluginIndex];var pluginConfig=_model.config[pluginName]===undefined?{}:_model.config[pluginName];_model.plugins.config[pluginName]=_model.plugins.config[pluginName]===undefined?pluginConfig:jwplayer.utils.extend(_model.plugins.config[pluginName],pluginConfig);if(typeof _model.plugins.config[pluginName].position=="undefined"){_model.plugins.config[pluginName].position=jwplayer.html5.view.positions.OVER}else{_model.plugins.config[pluginName].position=_model.plugins.config[pluginName].position.toString().toUpperCase()}}if(typeof _model.plugins.config.dock!="undefined"){if(typeof _model.plugins.config.dock!="object"){var position=_model.plugins.config.dock.toString().toUpperCase();_model.plugins.config.dock={position:position}}if(typeof _model.plugins.config.dock.position!="undefined"){_model.plugins.config.dock.align=_model.plugins.config.dock.position;_model.plugins.config.dock.position=jwplayer.html5.view.positions.OVER}}_model.loadPlaylist=function(arg,ready){var input;if(typeof arg=="string"){try{input=eval(arg)}catch(err){input=arg}}else{input=arg}var config;switch(jwplayer.utils.typeOf(input)){case"object":config=input;break;case"array":config={playlist:input};break;default:config={file:input};break}_model.playlist=new jwplayer.html5.playlist(config);if(_model.config.shuffle){_model.item=_getShuffleItem()}else{if(_model.config.item>=_model.playlist.length){_model.config.item=_model.playlist.length-1}else{if(_model.config.item<0){_model.config.item=0}}_model.item=_model.config.item}if(!ready){_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_PLAYLIST_LOADED,{playlist:_model.playlist})}_model.setActiveMediaProvider(_model.playlist[_model.item])};function _getShuffleItem(){var result=null;if(_model.playlist.length>1){while(result===null){result=Math.floor(Math.random()*_model.playlist.length);if(result==_model.item){result=null}}}else{result=0}return result}function forward(evt){if(evt.type==jwplayer.api.events.JWPLAYER_MEDIA_LOADED){_container=_media.getDisplayElement()}_eventDispatcher.sendEvent(evt.type,evt)}_model.setActiveMediaProvider=function(playlistItem){if(_media!==undefined){_media.resetEventListeners()}_media=new jwplayer.html5.mediavideo(_model,_container);_media.addGlobalListener(forward);if(_model.config.chromeless){_media.load(playlistItem)}return true};_model.getMedia=function(){return _media};_model.setupPlugins=function(){for(var plugin in _model.plugins.order){try{var pluginName=_model.plugins.order[plugin];if(jwplayer.html5[pluginName]!==undefined){_model.plugins.object[pluginName]=new jwplayer.html5[pluginName](_api,_model.plugins.config[pluginName])}else{_model.plugins.order.splice(plugin,plugin+1)}}catch(err){jwplayer.utils.log("Could not setup "+pluginName)}}};return _model}})(jwplayer);(function(a){a.html5.playlist=function(b){var d=[];if(b.playlist&&b.playlist instanceof Array&&b.playlist.length>0){for(var c in b.playlist){if(!isNaN(parseInt(c))){d.push(new a.html5.playlistitem(b.playlist[c]))}}}else{d.push(new a.html5.playlistitem(b))}return d}})(jwplayer);(function(a){a.html5.playlistitem=function(c){var b={author:"",date:"",description:"",image:"",link:"",mediaid:"",tags:"",title:"",provider:"",file:"",streamer:"",duration:-1,start:0,currentLevel:-1,levels:[]};for(var d in b){if(c[d]!==undefined){b[d]=c[d]}}if(b.levels.length===0){b.levels[0]=new a.html5.playlistitemlevel(b)}return b}})(jwplayer);(function(a){a.html5.playlistitemlevel=function(b){var d={file:"",streamer:"",bitrate:0,width:0};for(var c in d){if(b[c]!==undefined){d[c]=b[c]}}return d}})(jwplayer);(function(a){a.html5.skin=function(){var b={};var c=false;this.load=function(d,e){new a.html5.skinloader(d,function(f){c=true;b=f;e()},function(){new a.html5.skinloader("",function(f){c=true;b=f;e()})})};this.getSkinElement=function(d,e){if(c){try{return b[d].elements[e]}catch(f){a.utils.log("No such skin component / element: ",[d,e])}}return null};this.getComponentSettings=function(d){if(c){return b[d].settings}return null};this.getComponentLayout=function(d){if(c){return b[d].layout}return null}}})(jwplayer);(function(a){a.html5.skinloader=function(f,n,i){var m={};var c=n;var j=i;var e=true;var h;var l=f;var q=false;function k(){if(typeof l!="string"||l===""){d(a.html5.defaultSkin().xml)}else{a.utils.ajax(a.utils.getAbsolutePath(l),function(r){try{if(r.responseXML!==null){d(r.responseXML);return}}catch(s){}d(a.html5.defaultSkin().xml)},function(r){d(a.html5.defaultSkin().xml)})}}function d(w){var C=w.getElementsByTagName("component");if(C.length===0){return}for(var F=0;F<C.length;F++){var A=C[F].getAttribute("name");var z={settings:{},elements:{},layout:{}};m[A]=z;var E=C[F].getElementsByTagName("elements")[0].getElementsByTagName("element");for(var D=0;D<E.length;D++){b(E[D],A)}var x=C[F].getElementsByTagName("settings")[0];if(x!==undefined&&x.childNodes.length>0){var I=x.getElementsByTagName("setting");for(var N=0;N<I.length;N++){var O=I[N].getAttribute("name");var G=I[N].getAttribute("value");var v=/color$/.test(O)?"color":null;m[A].settings[O]=a.utils.typechecker(G,v)}}var J=C[F].getElementsByTagName("layout")[0];if(J!==undefined&&J.childNodes.length>0){var K=J.getElementsByTagName("group");for(var u=0;u<K.length;u++){var y=K[u];m[A].layout[y.getAttribute("position")]={elements:[]};for(var M=0;M<y.attributes.length;M++){var B=y.attributes[M];m[A].layout[y.getAttribute("position")][B.name]=B.value}var L=y.getElementsByTagName("*");for(var t=0;t<L.length;t++){var r=L[t];m[A].layout[y.getAttribute("position")].elements.push({type:r.tagName});for(var s=0;s<r.attributes.length;s++){var H=r.attributes[s];m[A].layout[y.getAttribute("position")].elements[t][H.name]=H.value}if(m[A].layout[y.getAttribute("position")].elements[t].name===undefined){m[A].layout[y.getAttribute("position")].elements[t].name=r.tagName}}}}e=false;p()}}function p(){clearInterval(h);if(!q){h=setInterval(function(){o()},100)}}function b(w,v){var u=new Image();var r=w.getAttribute("name");var t=w.getAttribute("src");var y;if(t.indexOf("data:image/png;base64,")===0){y=t}else{var s=a.utils.getAbsolutePath(l);var x=s.substr(0,s.lastIndexOf("/"));y=[x,v,t].join("/")}m[v].elements[r]={height:0,width:0,src:"",ready:false};u.onload=function(z){g(u,r,v)};u.onerror=function(z){q=true;p();j()};u.src=y}function o(){for(var r in m){if(r!="properties"){for(var s in m[r].elements){if(!m[r].elements[s].ready){return}}}}if(e===false){clearInterval(h);c(m)}}function g(r,t,s){m[s].elements[t].height=r.height;m[s].elements[t].width=r.width;m[s].elements[t].src=r.src;m[s].elements[t].ready=true;p()}k()}})(jwplayer);(function(a){a.html5.api=function(b,k){var j={};var e=document.createElement("div");b.parentNode.replaceChild(e,b);e.id=b.id;j.version=a.version;j.id=e.id;var i=new a.html5.model(j,e,k);var g=new a.html5.view(j,e,i);var h=new a.html5.controller(j,e,i,g);j.skin=new a.html5.skin();j.jwPlay=function(l){if(typeof l=="undefined"){d()}else{if(l.toString().toLowerCase()=="true"){h.play()}else{h.pause()}}};j.jwPause=function(l){if(typeof l=="undefined"){d()}else{if(l.toString().toLowerCase()=="true"){h.pause()}else{h.play()}}};function d(){if(i.state==a.api.events.state.PLAYING||i.state==a.api.events.state.BUFFERING){h.pause()}else{h.play()}}j.jwStop=h.stop;j.jwSeek=h.seek;j.jwPlaylistItem=h.item;j.jwPlaylistNext=h.next;j.jwPlaylistPrev=h.prev;j.jwResize=h.resize;j.jwLoad=h.load;function f(l){return function(){return i[l]}}j.jwGetItem=f("item");j.jwGetPosition=f("position");j.jwGetDuration=f("duration");j.jwGetBuffer=f("buffer");j.jwGetWidth=f("width");j.jwGetHeight=f("height");j.jwGetFullscreen=f("fullscreen");j.jwSetFullscreen=h.setFullscreen;j.jwGetVolume=f("volume");j.jwSetVolume=h.setVolume;j.jwGetMute=f("mute");j.jwSetMute=h.setMute;j.jwGetStretching=f("stretching");j.jwGetState=f("state");j.jwGetVersion=function(){return j.version};j.jwGetPlaylist=function(){return i.playlist};j.jwAddEventListener=h.addEventListener;j.jwRemoveEventListener=h.removeEventListener;j.jwSendEvent=h.sendEvent;j.jwDockSetButton=function(o,l,m,n){if(i.plugins.object.dock&&i.plugins.object.dock.setButton){i.plugins.object.dock.setButton(o,l,m,n)}};j.jwGetLevel=function(){};j.jwGetBandwidth=function(){};j.jwGetLockState=function(){};j.jwLock=function(){};j.jwUnlock=function(){};function c(n,m,l){return function(){n.loadPlaylist(n.config,true);n.setupPlugins();m.setup(n.getMedia().getDisplayElement());var o={id:j.id,version:j.version};l.sendEvent(a.api.events.JWPLAYER_READY,o);if(playerReady!==undefined){playerReady(o)}if(window[n.config.playerReady]!==undefined){window[n.config.playerReady](o)}n.sendEvent(a.api.events.JWPLAYER_PLAYLIST_LOADED,{playlist:n.playlist});l.item(n.item)}}if(i.config.chromeless){setTimeout(c(i,g,h),25)}else{j.skin.load(i.config.skin,c(i,g,h))}return j}})(jwplayer);
\ No newline at end of file diff --git a/web/stream.gathering.org/pre-tg15/player.swf b/web/stream.gathering.org/pre-tg15/player.swf Binary files differdeleted file mode 100644 index 6cdfd72..0000000 --- a/web/stream.gathering.org/pre-tg15/player.swf +++ /dev/null diff --git a/web/stream.gathering.org/pre-tg15/singularity.png b/web/stream.gathering.org/pre-tg15/singularity.png Binary files differdeleted file mode 100644 index 3a13cdf..0000000 --- a/web/stream.gathering.org/pre-tg15/singularity.png +++ /dev/null diff --git a/web/stream.gathering.org/pre-tg15/streamstats-fast.pl b/web/stream.gathering.org/pre-tg15/streamstats-fast.pl deleted file mode 100755 index f4caa24..0000000 --- a/web/stream.gathering.org/pre-tg15/streamstats-fast.pl +++ /dev/null @@ -1,15 +0,0 @@ -#! /usr/bin/perl -use strict; -use warnings; -use POSIX; -use CGI qw(fatalsToBrowser); - -my $port_spec = CGI::param('port'); -my $proto_spec = CGI::param('proto'); -my $audience_spec = CGI::param('audience'); - -print CGI::header(-type=>'image/png'); - -# I'm sure this is really safe -system("/srv/stream.tg13.gathering.org/fix_count.pl | /srv/stream.tg13.gathering.org/streamstats - $port_spec $proto_spec $audience_spec"); -#system("/srv/stream.tg13.gathering.org/streamstats", "/home/techserver/cleaned_datacube.log", $port_spec, $proto_spec, $audience_spec); diff --git a/web/stream.gathering.org/pre-tg15/streamstats.cpp b/web/stream.gathering.org/pre-tg15/streamstats.cpp deleted file mode 100644 index e81419f..0000000 --- a/web/stream.gathering.org/pre-tg15/streamstats.cpp +++ /dev/null @@ -1,217 +0,0 @@ -#include <stdio.h> -#include <string.h> -#include <map> -#include <set> -#include <string> -#include <vector> -#include <stdlib.h> - -using namespace std; - -map<string, string> port_desc = { - { "3013", "main (3013)" }, - { "3014", "main-sd (3014)" }, - { "3015", "webcam (3015)" }, - { "3016", "webcam-south (3016)" }, - { "3017", "webcam-south-transcode (3017)" }, - { "3018", "webcam-fisheye (3018)" }, - { "5013", "main-transcode (5013)" }, - { "5015", "webcam-transcode (5015)" }, -}; - -struct Spec { - set<string> incl; - bool compare; -}; - -Spec parse_spec(const string &spec) -{ - Spec ret; - ret.compare = false; - - if (spec == "compare") { - ret.compare = true; - return ret; - } - if (spec == "dontcare") { - return ret; - } - - const char *ptr = spec.c_str(); - if (strncmp(ptr, "compare:", 8) == 0) { - ptr += 8; - ret.compare = true; - } - - for ( ;; ) { - const char *end = strchr(ptr, ','); - if (end == NULL) { - ret.incl.insert(ptr); - break; - } else { - ret.incl.insert(string(ptr, end)); - ptr = end + 1; - } - } - - return ret; -} - -bool filter(const string &entry, const Spec &spec) -{ - if (spec.incl.empty()) { - return false; - } - return spec.incl.count(entry) == 0; -} - -vector<string> get_stream_id(const string& port, const string &proto, const string &audience, - const Spec& port_spec, const Spec &proto_spec, const Spec &audience_spec) -{ - vector<string> keys; - if (port_spec.compare) { - if (port_desc.count(port)) { - keys.push_back(port_desc[port]); - } else { - char buf[256]; - sprintf(buf, "___%s___", port.c_str()); - keys.push_back(buf); - } - } - if (proto_spec.compare) { - keys.push_back(proto); - } - if (audience_spec.compare) { - keys.push_back(audience); - } - return keys; -} - -string get_stream_desc(const vector<string> &stream_id) -{ - string ret; - for (int i = 0; i < stream_id.size(); ++i) { - if (i != 0) { - ret += ","; - } - ret += stream_id[i]; - } - return ret; -} - -int main(int argc, char **argv) -{ - Spec port_spec = parse_spec(argv[2]); - Spec proto_spec = parse_spec(argv[3]); - Spec audience_spec = parse_spec(argv[4]); - - map<string, map<vector<string>, int> > lines; - map<vector<string>, int> stream_ids; - vector<string> stream_descs; - - // Parse the log. - FILE *fp; - if (strcmp(argv[1], "-") == 0) { - fp = stdin; - } else { - fp = fopen(argv[1], "r"); - } - while (!feof(fp)) { - char buf[1024]; - fgets(buf, 1024, fp); - - if (buf == NULL) { - break; - } - char *ptr = strchr(buf, '\n'); - if (ptr != NULL) { - *ptr = 0; - } - - char *date = strtok(buf, " "); - char *port = strtok(NULL, " "); - char *proto = strtok(NULL, " "); - char *audience = strtok(NULL, " "); - char *count = strtok(NULL, " "); - - if (date == NULL || port == NULL || proto == NULL || audience == NULL || count == NULL) { - continue; - } - - if (filter(port, port_spec)) { - continue; - } - if (filter(proto, proto_spec)) { - continue; - } - if (filter(audience, audience_spec)) { - continue; - } - - vector<string> stream_id = get_stream_id(port, proto, audience, port_spec, proto_spec, audience_spec); - if (stream_ids.count(stream_id) == 0) { - int stream_id_num = stream_ids.size(); - stream_ids.insert(make_pair(stream_id, stream_id_num)); - stream_descs.push_back(get_stream_desc(stream_id)); - } - lines[date][stream_id] += atoi(count); - } - fclose(fp); - - // Output. - char *data_file = tempnam(NULL, "data"); - FILE *datafp = fopen(data_file, "w"); - if (datafp == NULL) { - perror(data_file); - exit(1); - } - - vector<int> cols(stream_ids.size()); - for (auto& it : lines) { - const string& date = it.first; - - for (const auto& it2 : stream_ids) { - const vector<string>& stream_id = it2.first; - int stream_id_num = it2.second; - - cols[stream_id_num] = it.second[stream_id]; // note: might zero-initialize - } - fprintf(datafp, "%s", date.c_str()); - for (int i = 0; i < cols.size(); ++i) { - fprintf(datafp, " %d", cols[i]); - } - fprintf(datafp, "\n"); - } - fclose(datafp); - - // Make gnuplot script. - char *plot_file = tempnam(NULL, "plot"); - FILE *plotfp = fopen(plot_file, "w"); - if (plotfp == NULL) { - perror(plot_file); - exit(1); - } - - fprintf(plotfp, "set terminal png\n"); - fprintf(plotfp, "set xdata time\n"); - fprintf(plotfp, "set timefmt \"20%%y-%%m-%%d-%%H:%%M:%%S\"\n"); - fprintf(plotfp, "set xtics axis \"2000-00-00-01:00:00\"\n"); - fprintf(plotfp, "set format x \"%%H\"\n"); - - fprintf(plotfp, "plot"); - for (int i = 0; i < cols.size(); ++i) { - if (i == 0) { - fprintf(plotfp, " "); - } else { - fprintf(plotfp, ","); - } - fprintf(plotfp, "\"%s\" using 1:%d title \"%s\" with lines", data_file, i + 2, stream_descs[i].c_str()); - } - fprintf(plotfp, "\n"); - - fclose(plotfp); - - char buf[1024]; - sprintf(buf, "gnuplot < %s", plot_file); - system(buf); -} diff --git a/web/stream.gathering.org/pre-tg15/streamstats.html b/web/stream.gathering.org/pre-tg15/streamstats.html deleted file mode 100644 index 5d6adc7..0000000 --- a/web/stream.gathering.org/pre-tg15/streamstats.html +++ /dev/null @@ -1,81 +0,0 @@ -<html> - <head> - <script> - function construct_url(name, choices) { - // port - var url = name + '='; - if (document.getElementById('split_' + name).checked) { - url += 'compare:'; - } - var choices_so_far = 0; - for (var i = 0; i < choices.length; ++i) { - var check = document.getElementById(name + '_' + choices[i]); - if (!check.checked) { - continue; - } - if (choices_so_far++ != 0) { - url += ','; - } - url += choices[i]; - } - return url; - } - - function update() { - var url = 'http://stream.tg13.gathering.org/streamstats-fast.pl?'; - url += construct_url('port', [ 3013, 3014, 3015, 3016, 3017, 3018, 5013, 5015 ]); - url += '&' + construct_url('proto', [ 'IPv4', 'IPv6' ]); - url += '&' + construct_url('audience', [ 'internal', 'external' ]); - - document.getElementById('graph').src = url; - } - </script> - </head> - <body> - <table> - <tr> - <th>Ports:</th> - <td> - <label><input type="checkbox" id="port_3013" checked="checked" onchange="update();" /> 3013 (Main)</label><br /> - <label><input type="checkbox" id="port_3014" checked="checked" onchange="update();" /> 3014 (Main SD)</label><br /> - <label><input type="checkbox" id="port_3015" checked="checked" onchange="update();" /> 3015 (Webcam)</label><br /> - <label><input type="checkbox" id="port_3016" checked="checked" onchange="update();" /> 3016 (Webcam south)</label><br /> - <label><input type="checkbox" id="port_3017" checked="checked" onchange="update();" /> 3017 (Webcam south transcode)</label><br /> - <label><input type="checkbox" id="port_3018" checked="checked" onchange="update();" /> 3018 (Fisheye)</label><br /> - <label><input type="checkbox" id="port_5013" checked="checked" onchange="update();" /> 5013 (Main LQ/Flash)</label><br /> - <label><input type="checkbox" id="port_5015" checked="checked" onchange="update();" /> 5015 (Webcam LQ/Flash)</label> - </td> - <td> - <label><input type="checkbox" id="split_port" onchange="update();" /> Split</label> - </td> - </tr> - <tr> - <th>Protocol:</th> - <td> - <label><input type="checkbox" id="proto_IPv4" checked="checked" onchange="update();" /> IPv4</label><br /> - <label><input type="checkbox" id="proto_IPv6" checked="checked" onchange="update();" /> IPv6</label><br /> - </td> - <td> - <label><input type="checkbox" id="split_proto" onchange="update();" /> Split</label> - </td> - </tr> - <tr> - <th>Audience:</th> - <td> - <label><input type="checkbox" id="audience_internal" checked="checked" onchange="update();" /> Internal</label><br /> - <label><input type="checkbox" id="audience_external" checked="checked" onchange="update();" /> External</label><br /> - </td> - <td> - <label><input type="checkbox" id="split_audience" onchange="update();" /> Split</label> - </td> - </tr> - <tr> - <td colspan="3"> - <input type="button" value="Update display" onclick="update();" /> - </td> - </tr> - </table> - <p><img src="" id="graph" /></p> - <script>update();</script> - </body> -</html> diff --git a/web/stream.gathering.org/pre-tg15/streamstats.pl b/web/stream.gathering.org/pre-tg15/streamstats.pl deleted file mode 100755 index e4c20f9..0000000 --- a/web/stream.gathering.org/pre-tg15/streamstats.pl +++ /dev/null @@ -1,116 +0,0 @@ -#! /usr/bin/perl -use strict; -use warnings; -use POSIX; -use CGI qw(fatalsToBrowser); - -my %port_spec = prepare_spec(CGI::param('port')); -my %proto_spec = prepare_spec(CGI::param('proto')); -my %audience_spec = prepare_spec(CGI::param('audience')); - -#open LOG, "<", "/home/techserver/count_datacube.log" -open LOG, "-|", "/home/techserver/fix_count.pl" -#open LOG, "<", "/home/techserver/cleaned_datacube.log" - or die "count_datacube.log: $!"; - -our %desc = ( - 3013 => 'main (3013)', - 3014 => 'main-sd (3014)', - 3015 => 'webcam (3015)', - 3016 => 'webcam-south (3016)', - 3017 => 'webcam-south-transcode (3017)', - 3018 => 'webcam-fisheye (3018)', - 5013 => 'main-transcode (5013)', - 5015 => 'webcam-transcode (5015)', -); - -my $lines = {}; -my %streams = (); - -while (<LOG>) { - chomp; - my ($date, $port, $proto, $audience, $count) = split /\s+/; - next if (filter($port, $proto, $audience)); - my $stream_id = get_stream_id($port, $proto, $audience); - $streams{$stream_id} = 1; - $lines->{$date}{$stream_id} += $count; -} - -close LOG; - -print CGI::header(-type=>'image/png'); - -my $tmpfile = POSIX::tmpnam(); -open GRAPH, ">", $tmpfile - or die "$tmpfile: $!"; -for my $date (sort keys %$lines) { - my @cols = (); - for my $stream (keys %streams) { - push @cols, ($lines->{$date}{$stream} // "0"); - } - print GRAPH "$date ", join(' ', @cols), "\n"; -} -close GRAPH; - -my $tmpfile2 = POSIX::tmpnam(); -open GNUPLOT, ">", $tmpfile2 - or die "$tmpfile2: $!"; -print GNUPLOT "set terminal png\n"; -print GNUPLOT "set xdata time\n"; -print GNUPLOT "set timefmt \"20%y-%m-%d-%H:%M:%S\"\n"; -print GNUPLOT "set xtics axis \"2000-00-00-01:00:00\"\n"; -print GNUPLOT "set format x \"%H\"\n"; - -my @plots = (); -my $idx = 2; -for my $stream (keys %streams) { - push @plots, "\"$tmpfile\" using 1:$idx title \"$stream\" with lines"; - ++$idx; -} -print GNUPLOT "plot ", join(', ', @plots); - -# \"$tmpfile\" using 0:2 with lines, \"$tmpfile\" using 0:3 with lines\n"; -close GNUPLOT; - -system("gnuplot < $tmpfile2"); - -sub prepare_spec { - my $spec = shift; - return () if ($spec eq 'compare' || $spec eq 'dontcare'); - $spec =~ s/^compare://; - - my %ret = (); - for my $s (split /,/, $spec) { - $ret{$s} = 1; - } - return %ret; -} - -sub filter { - my ($port, $proto, $audience) = @_; - return 1 if (filter_list(\%port_spec, $port)); - return 1 if (filter_list(\%proto_spec, $proto)); - return 1 if (filter_list(\%audience_spec, $audience)); - return 0; -} - -sub filter_list { - my ($spec, $candidate) = @_; - return 0 if ((scalar keys %$spec) == 0); - return !exists($spec->{$candidate}); -} - -sub get_stream_id { - my ($port, $proto, $audience) = @_; - my @keys = (); - if (CGI::param('port') =~ /^compare/) { - if (exists($desc{$port})) { - push @keys, $desc{$port}; - } else { - push @keys, "___" . $port . "___"; - } - } - push @keys, $proto if (CGI::param('proto') =~ /^compare/); - push @keys, $audience if (CGI::param('audience') =~ /^compare/); - return join(',', @keys); -} diff --git a/web/stream.gathering.org/pre-tg15/style.css b/web/stream.gathering.org/pre-tg15/style.css deleted file mode 100644 index 0d21d45..0000000 --- a/web/stream.gathering.org/pre-tg15/style.css +++ /dev/null @@ -1,1960 +0,0 @@ -•/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ - -html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1.5; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} - -/* @override http://www.gathering.org/tg12/files/content/design/css/typography.css */ - -/* Generic ------------------------------------------------------- */ -html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { - font-family: Arial, Sans-Serif; - font-weight: 400; -} -body { - font-size: 15px; - line-height: 20px; - color: #777; -} -/* Headings ------------------------------------------------------- */ -h1, h2, h3, h4, h5, h6 { font-weight: bold; color: #404040; } -h1 { font-size: 45px; line-height: 50px; margin-bottom: 15px; } -h2 { font-size: 25px; line-height: 31px; margin-bottom: 12px;} -h3 { font-size: 20px; line-height: 26px; } -h4 { font-size: 16px; line-height: 22px; } -h5 { font-size: 15px; line-height: 20px; } -h6 { font-size: 12px; line-height: 17px; } - -/* Text 'n stuff ------------------------------------------------------- */ -p { margin: 0 0 20px 0; } -.page p { - margin: 0 0 0.8em 0 !important; -} -blockquote { - margin: 20px; - padding: 0 0 0 40px; - color: #555; - font-style: italic; - color: #888; - position: relative; -} -blockquote p::before { - position: absolute; - top: 50px; - margin-left: -60px; - content: "\201D"; - font-size: 150px; - font-style: normal; - color: #b20f15; -} -blockquote p { - display: block; - margin-left: 40px !important; -} -blockquote small::before { - content: "\2013"; - margin: 5px; -} -blockquote small { - font-size: 13px; - margin-left: -55px; -} -strong { font-weight: bold; } - -ul { - margin: 0 0 20px 10px; - list-style-type: none; - position: relative; -} -ul.submenu ul { - margin-bottom: 0px; -} -ul li:before { - content: "\2022"; - position: absolute; - left: -17px; - width: 15px; - text-align: right; - color: #b20f15; - font-size: 13px; - line-height: 21px; -} -i, em { font-style: italic; } - -ol { - margin: 0 0 20px 15px; - list-style-type: none; - position: relative; - counter-reset: section; -} -ol > li { - counter-increment: section; -} -ol > li:before { - content: counter(section); - position: absolute; - left: -30px; - width: 23px; - text-align: right; - color: #b20f15; - font-size: 12px; - line-height: 22px; -} -dl dt { font-weight: bold; } -dd { margin: 0 0 0 20px; } - -a { color: #b20f15; text-decoration: none; } -a:hover { color: #c3027b; } -code, pre { - padding: 0 3px 2px; - font-family: Menlo, Monaco, "Courier New", monospace; - font-size: 12px; - color: #8F8F8F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - background-color: #F8F8F8; - border: 1px solid #C0C4C5; -} -code { - padding: 3px 4px; - color: #b20f15; -} -pre { - display: block; - padding: 8.5px; - margin: 0 0 9px; - line-height: 18px; - white-space: pre; - white-space: pre-wrap; - word-break: break-all; -} -table { - margin-bottom: 20px; -} -th, td { - padding: 4px 5px; -} -td, th { - border-left: 1px solid #E2E2E2; -} -tr td:first-child, tr th:first-child { - border: none; -} -tr td { - text-align: right; -} -th { - font-weight: bold; - vertical-align: bottom; -} -th, td { - min-width: 100px; -} -th p, td p { - margin: 0; -} -tbody tr:nth-child(even) td, thead tr th { - background-color: #F2F2F2; -} -hr { - margin-top: 0.5em; - margin-bottom: 0.5em; - border: 0; - color: #D5D5D5; - background-color: #D5D5D5; - height: 1px; -} -.visible-phone { - display: none; -} -.title-container h2 { - font-family: Tahoma, Geneva, sans-serif; - font-size: 26px; - margin-bottom: 5px; - line-height: normal; -} -h2.size13 { font-size: 13px; } -h2.size14 { font-size: 14px; } -h2.size15 { font-size: 15px; } -h2.size16 { font-size: 16px; } -h2.size17 { font-size: 17px; } -h2.size18 { font-size: 18px; } -h2.size19 { font-size: 19px; } -h2.size20 { font-size: 20px; } -h2.size21 { font-size: 21px; } -h2.size22 { font-size: 22px; } -h2.size23 { font-size: 23px; } -h2.size24 { font-size: 24px; } -h2.size25 { font-size: 25px; } -h2.size26 { font-size: 26px; } -h2.size27 { font-size: 27px; } -h2.size28 { font-size: 28px; } -h2.size29 { font-size: 29px; } -h2.size30 { font-size: 30px; } -h2.size31 { font-size: 31px; } -h2.size32 { font-size: 32px; } -h2.size33 { font-size: 33px; } -h2.size34 { font-size: 34px; } -h2.size35 { font-size: 35px; } -h2.size36 { font-size: 36px; } -h2.size37 { font-size: 37px; } -h2.size38 { font-size: 38px; } -h2.size39 { font-size: 39px; } -h2.size40 { font-size: 40px; } -h2.size41 { font-size: 41px; } -h2.size42 { font-size: 42px; } -h2.size43 { font-size: 43px; } -h2.size44 { font-size: 44px; } -h2.size45 { font-size: 45px; } -h2.size46 { font-size: 46px; } -h2.size47 { font-size: 47px; } -h2.size48 { font-size: 48px; } -h2.size49 { font-size: 49px; } -h2.size50 { font-size: 50px; } -h2.size51 { font-size: 51px; } -h2.size52 { font-size: 52px; } -h2.size53 { font-size: 53px; } -h2.size54 { font-size: 54px; } -h2.size55 { font-size: 55px; } -h2.size56 { font-size: 56px; } -h2.size57 { font-size: 57px; } -h2.size58 { font-size: 58px; } -h2.size59 { font-size: 59px; } -h2.size60 { font-size: 60px; } -h2.size61 { font-size: 61px; } -h2.size62 { font-size: 62px; } -h2.size63 { font-size: 63px; } -h2.size64 { font-size: 64px; } -h2.size65 { font-size: 65px; } -h2.size66 { font-size: 66px; } -h2.size67 { font-size: 67px; } -h2.size68 { font-size: 68px; } -h2.size69 { font-size: 69px; } -h2.size70 { font-size: 70px; } -h2.size71 { font-size: 71px; } -h2.size72 { font-size: 72px; } -h2.size73 { font-size: 73px; } -h2.size74 { font-size: 74px; } -h2.size75 { font-size: 75px; } -h2.size76 { font-size: 76px; } -h2.size77 { font-size: 77px; } -h2.size78 { font-size: 78px; } -h2.size79 { font-size: 79px; } -h2.size80 { font-size: 80px; } -h2.size81 { font-size: 81px; } -h2.size82 { font-size: 82px; } -h2.size83 { font-size: 83px; } -h2.size84 { font-size: 84px; } -h2.size85 { font-size: 85px; } -h2.size86 { font-size: 86px; } -h2.size87 { font-size: 87px; } -h2.size88 { font-size: 88px; } -h2.size89 { font-size: 89px; } -h2.size90 { font-size: 90px; } -h2.size91 { font-size: 91px; } -h2.size92 { font-size: 92px; } -h2.size93 { font-size: 93px; } -h2.size94 { font-size: 94px; } -h2.size95 { font-size: 95px; } -h2.size96 { font-size: 96px; } -h2.size97 { font-size: 97px; } -h2.size98 { font-size: 98px; } -h2.size99 { font-size: 99px; } -h2.size100 { font-size: 100px; } - -.cite:before { - content: "\201C"; -} -.cite:after { - content: "\201D"; -} -.cite > .cite:before { - content: "\2018"; -} -.cite > .cite:after { - content: "\2019"; -} -.bullet:before { - content: "\2022"; -} -.dash:after { - content: "\2013"; -} -.hellip:after { - content: "\2026"; -} -.cite:lang(no):before { - content: "\00AB"; -} -.cite:lang(no):after { - content: "\00BB"; -} -/* Meta thingy ------------------------------------------------------- */ -.breadcrumbs span.delimiter:before { - content: "\25BA"; - margin-right: 8px; - font-size: 8px; - position: relative; - top: -2px; - margin: 0 5px 0 3px; - color: #b20f15; -} -.breadcrumbs { - font-size: 12px; - margin-bottom: 10px; -} -.summary, -.summary p { - font-size: 16px; - line-height: 22px; - font-weight: 600 !important; - margin-bottom: 10px; -} -.metainfo { margin: 10px 0; } -.byline, .meta { - color: #888; - display: block; - font-size: 12px; - margin-bottom: 0.8em; -} -.byline span.delimiter:before { - content: "\2022"; - margin-right: 8px; - font-size: 8px; - position: relative; - top: -2px; - margin: 0 5px 0 5px; - color: #b20f15; -} -.phototext { - margin-top: 5px; - line-height: 18px; -} -.photoline { - margin-top: 5px; - font-style: italic; - font-size: 12px; - float: right; -} -.page h1 { margin-top: 10px; } -.vignette { - background-color: #6e6e6e; - margin-top: 5px; - margin-bottom: 5px; - height: 8px; - position: relative; -} -.vignette span { - line-height: 19px; -} -div.page .vignette { - margin-bottom: 10px; -} -div.page .span11 img { - max-width: 488px; - height: auto; -} -.vignette > span { - text-transform: lowercase; - color: #6e6e6e; - display: block; - margin-left: 15px; - background-color: white; - position: absolute; - top: -6px; - font-size: 12px; - padding: 0 3px 0 3px; - font-weight: 500; -} -div.news33.category-news:nth-child(3n) { - clear: left; -} -div.portal > h1 { - font-size: 20px; - padding: 0 10px; - color: white; -} -h1.portal-creative { - background-color: #ec008c; -} -h1.portal-game { - background-color: #fba51e; -} -h1.portal-entertainmentlectures { - background-color: #819700; -} -div.portal > div.row { - margin-bottom: 40px; -} -div.category-news h2 a { - color: black; -} -/* - * CSS for The Gathering 2013. - * Copyright KANDU and contributors - */ - -/* HTML & BODY ------------------------------------------------------- */ -body { - //background: url('/tg13/files/content/design/images/background.jpg') no-repeat; - background-position: top center; -} - -html, body { - height:100%; -} -body.iframe { - background-image: none; - height: auto; -} - -/* Generic styles ------------------------------------------------------- */ - -.hidden { display: none; } -menu { margin: 0; padding: 0; } - -/* Containers and rows ------------------------------------------------------- */ -.container { - width: 1320px; - margin: 0 auto; - zoom: 1; -} - -.content { - width: 840px; -} - -.container:before, -.container:after { - zoom: 1; -} -.container:before, -.container:after, -.content:before, -.content:after, -.row:before, -.row:after { - display: table; - line-height: 0; - content: ""; -} -.container:after, -.row:after { - clear: both; -} -.row { - margin-left: -40px; -} - -/* Main structure ------------------------------------------------------- */ -header, header > div.container { -} -header { - margin-bottom: 40px; -} -header > div.container { -} -header > div.container .inner { - float: left; - width: 830px; -} -footer a, footer, footer p, footer h4 { - color: #2d4f9e; -} -footer a:hover { - color: #fff; -} -header a { - color: #c3027b; -} -header a:hover { - color: #860050; -} -header > div.container .logo { - float: left; - width: 250px; -} -header .left, header .left > div { - float: right; -} -header .right { - margin-left: 10px; - float: right; - width: 180px; -} -header .when { - background-color: #5a0037; - padding: 10px; - color: white; - border-bottom-right-radius: 6px; - border-bottom-left-radius: 6px; - font-size: 11px; - line-height: 12px; - width: 110px; - text-align: center; -} -header .when-phone .when { - width: 120px; -} -header .when-phone { - float: right; -} -header .language { - margin-top: 10px; - line-height: 25px; - font-weight: 300; - margin-right: 10px; - padding-right: 10px; - border-right: 1px solid white; - font-size: 12px; -} -header ul.promo-menu { - padding-top: 40px; - margin: 0 0 0 15px; -} -header ul.promo-menu a { - font-weight: bold; - font-size: 13px; -} -header ul li:before { - margin-top: 2px; - content: "\25A0"; - position: absolute; - left: -15px; - width: 10px; - text-align: right; - color: #860050; - font-size: 18px; - line-height: 13px; -} -header .language a { - color: white; -} -header .language a:hover { - color: #2d4f9e; -} -footer { - margin-top: 80px; - background-color: #abdcff; - background-image: url('/tg13/files/content/design/images/footerbg.jpg'); - background-repeat: no-repeat; - background-position: center bottom; -} -footer > div.container { - padding: 0px 0px 150px 0px; -} -.footer-about { - margin-bottom: 40px; - height: 100px; - position: relative; -} -.footer-about > span { - position: absolute !important; - bottom: 0; left: 0; -} -footer > div.container > div.row { - margin-top: 80px; -} -footer ul { - margin: 0; -} -footer h4 { - margin-bottom: 20px; -} -footer div.full-span2 > iframe { - margin: 20px 0px; -} -footer a { - line-height: 25px; -} -footer ul li::before { - content: ""; -} -footer div.row { - margin-left: -20px; -} -footer div.row div.row { - margin-left: -40px; -} -.footnote p { - font-size: 13px; -} -.full-span9 { width: 1360px; } -.full-span8 { width: 1280px; } -.full-span7 { width: 1115px; } -.full-span6 { width: 950px; } -.full-span5 { width: 785px; } -.full-span4 { width: 620px; } -.full-span3 { width: 455px; } -.full-span2 { width: 290px; } -.full-span1 { width: 125px; } -.content, .sidebar { - float: left; -} -.content { - margin: 0 40px 0 40px; -} -.sidebar { - width: 200px; -} -.sidebar.sponsor img { - width: 200px; -} -.sidebar.sponsor img, -.sidebar.sponsor > div.vignette { - margin-bottom: 20px; -} -.sidebar.sponsor img { - filter: grayscale(100%); - -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); - -ms-filter: grayscale(100%); -o-filter: grayscale(100%); - filter: url(/tg13/files/content/design/css/filters.svg#grayscale); - filter: gray; - -webkit-filter: grayscale(1); -} -.sidebar.sponsor img:hover { - filter: none; - -webkit-filter: grayscale(0%); -moz-filter: grayscale(0%); - -ms-filter: grayscale(0%); -o-filter: grayscale(0%); -} -.fb-comments, .fb-comments *, .fb_iframe_widget, .fb_iframe_widget * {width: 100% !important;} -.span4 iframe { - width: 100%; -} -div.comments_header { - padding:8px; - background-color: #b1b1b1; - color: white; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - margin-bottom: 10px; - margin-top: 10px; -} -div.comments_header > div { - float: left; - margin-right: 8px; - content:url('/tg13/files/content/design/images/info.png'); -} -div.comments_header h4 { - line-height: 34px; - color: white; -} -div.comments_header p { - clear: both; - margin: 8px 0 0 0 !important; - font-size: 12px; - line-height: 15px; -} -.media-page { - margin-left: 40px; -} -.videoWrapper, #mediaspace { - position: relative; - padding-bottom: 56.25%; /* 16:9 */ - padding-top: 25px; - height: 0; - margin-bottom: 0.8em; -} -.videoWrapper iframe, #mediaspace embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.stream-icon { - float: left; - margin-right: 10px; -} -.stream-link { margin-bottom: 8px;} -#galleria { - width: 840px; -} - -/* Menu & Sidebar ------------------------------------------------------- */ - -menu { - list-style: none; -} -menu a { - color: #777; -} -menu a:hover, li[class^="menu-"] a:hover { - color: black; -} -li.menu-creative a, li.menu-creative span, li.menu-creative + menu.sub-menu a, li.menu-creative + menu.submenu span { - color: #ec008c; -} -li.menu-game a, li.menu-game span, li.menu-game + menu.sub-menu a, li.menu-game + menu.submenu span { - color: #fba51e; -} -li.menu-tickets a, li.menu-tickets span, li.menu-tickets + menu.sub-menu a, li.menu-tickets + menu.submenu span { - color: #b20f15; -} -li.menu-guide a, li.menu-guide span, li.menu-guide + menu.sub-menu a, li.menu-guide + menu.submenu span { - color: #034ea2; -} -li.menu-entertainment-lectures a, li.menu-entertainment-lectures span, li.menu-entertainment-lectures + menu.sub-menu a, li.menu-entertainment-lectures + menu.submenu span { - color: #819700; -} -menu.top-menu > li { - margin-bottom: 10px; -} - -div.top-menu-text > span { - color: #7595af; - font-size: 23px; - font-weight: bold; - display: table-row; - line-height: 23px; -} -div.top-menu-text > span.help-text { - font-weight: normal; - font-size: 14px; - display: table-row; - color: #a3a3a3; - line-height: 15px; -} -div.top-menu-text { - height: 38px; - padding: 6px 0 6px 0; - margin: 0 0 0 56px; -} -div.top-menu-icon { - width: 50px; - height: 50px; - float: left; - background-color: #bfd4e5; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; -} -menu.top-menu a:hover div.top-menu-text > span, -menu.top-menu a:hover div.top-menu-text > span.help-text { - color: #27448b; -} -menu.top-menu a:hover div.top-menu-icon { - background-color: #3d6db3; -} -div.top-menu-icon.icon-schedule { - background-image: url('/tg13/files/content/design/images/schedule.png'); -} -div.top-menu-icon.icon-tgtv { - background-image: url('/tg13/files/content/design/images/tgtv.png'); -} -div.top-menu-icon.icon-tng { - background-image: url('/tg13/files/content/design/images/tng.png'); -} -div.top-menu-icon.icon-forum { - background-image: url('/tg13/files/content/design/images/forum.png'); -} -div.top-menu-icon.icon-compo { - background-image: url('/tg13/files/content/design/images/compo.png'); -} -div.top-menu-icon.icon-news { - background-image: url('/tg13/files/content/design/images/news.png'); -} -menu.section-menu { - margin-top: 40px; - margin-left: 15px; -} -menu.section-menu li { - margin-bottom: 15px; -} -menu.sub-menu { - margin-bottom: 20px; - margin-left: 15px; -} -span.menu-expand { - display: block; - float: left; - margin-left: -15px; - cursor: pointer; -} - -/* Graphical Elements ------------------------------------------------------- */ -/* Language ------------------------------------------------------- */ -/* Search ------------------------------------------------------- */ -.search input { - vertical-align: top; - line-height: 1; -} -.search input[type="search"] { - -webkit-appearance: none; - box-sizing:content-box; - padding: 0; - padding-left: 3px; - margin: 0; - margin-top: 10px; - border: none; - color: #9dbfd9; - height: 25px; - width: 200px; - font-size: 12px; - font-style: italic; - border-radius: 3px; - line-height: 15px; -} -.search input:focus { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - outline: 0; -} -input[type=search]::-webkit-search-decoration { - -webkit-appearance:none; -} -input::-webkit-input-placeholder, -isindex::-webkit-input-placeholder, -textarea::-webkit-input-placeholder, -input::-moz-placeholder, -textarea::-moz-placeholder { - font-style: italic; - color: silver; -} -/* News ------------------------------------------------------- */ -.news { position: relative; } - -.news100, .clearer, .span19 { width: 840px; } -.span18 { width: 796px; } -.span17 { width: 752px; } -.span16 { width: 708px; } -.span15 { width: 664px; } -.news75, .span14 { width: 620px; } -.span13 { width: 576px; } -.news66, .span-two-third { width: 547px; } -.span12 { width: 532px; } -.span11 { width: 488px; } -.span10 { width: 444px; } -.news50, .span9 { width: 400px; } -.span8 { width: 356px; } -.span7 { width: 312px; } -.span6 { width: 268px; } -.news33, .span-one-third { width: 253px; } -.span5 { width: 224px; } -.news25, .span4 { width: 180px; } -.span3 { width: 136px; } -.span2 { width: 92px; } -.span1 { width: 48px; } -.clearer { clear: both; margin: 0px 0px 0px 40px !important; } - -div[class^="news"] > span, -div[class^="full-span"] > span, -div[class^="span"] > span { - position: relative; - display: block; -} -div[class^="news"] p, -div[class^="full-span"] p, -div[class^="span"] p { - margin: 0; -} -.article { - float: left; - margin: 0px 0px 40px 40px; -} -.article a, -.article a:hover { - text-decoration: none; - color: #777; -} - -.news_img_100 { - width: 100%; - margin: 20px 0 10px 0; -} -img.news_img_right { - width: 50%; - float: right; - margin: 0 0 20px 40px; -} -.span2.social-news div { - margin-bottom: 10px; -} -.icon-more > a { - float: right; - font-size: 13px; - margin-right: 21px; -} -.icon-more { - position: relative; -} -.icon-more > a::after { - margin-top: 2px; - padding-left: 3px; - padding-top: 2px; - padding-bottom: 1px; - margin-left: 5px; - position: absolute; - content: "\25BA"; - color: white; - background-color: black; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px; - width: 13px; - height: 13px; - font-size: 11px; - line-height: 11px; -} - -/* Page ------------------------------------------------------- */ -.page { - float: left; - margin: 0px 0px 40px 40px; -} -.page .page { - margin-left: 0px; -} -.page .page.news33 { - margin-left: 40px; -} -div.news-portal-header { - width: 840px; - margin-left: 40px !important; -} -div[class^="full-span"], -.page div[class^="news"], -.page div[class^="span"]{ - float: left; - margin-left: 40px; -} -.page h3 a, -.page li a { - border: none; -} -.page-right { - float: right; - clear: right; - margin-bottom: 40px; - margin-left: 40px; -} -.page-right a { - border: none; -} -.page-sidebar { - margin-left: 40px; -} -.page-right h3, -.page-sidebar h3 { - border-bottom: solid 4px #c0c4c5; - position: relative; - margin: 0 0 10px 0; -} -.page-sidebar .meta { - text-transform: uppercase; - font-size: 10px; -} -.page-sidebar { - position: relative; -} -.related-news { - margin-bottom: 8px; -} -.img-container { - margin-bottom: -5px; -} -.img-container a { - display:block; -} -/* Article skins ------------------------------------------------------- */ -div.article.skin-important { - background-color: black; - color: white; -} -div.article.skin-important { - padding-bottom: 40px; -} -div.article.skin-important > div[class^="news"] > span.content-container, -div.article.skin-important > div[class^="news"] > span.title-container { - margin-left: 40px; - margin-right: 40px; -} -div.article.skin-important > div[class^="news"] > span.title-container { - padding-top: 40px; -} -div.article.skin-important p, -div.article.skin-important h2, -div.article.skin-important a, -div.article.skin-important a:hover, -div.article.skin-important a:visited { - color: white; -} -div.article.skin-game .vignette, -div.article.skin-creative .vignette, -div.article.skin-entertainment .vignette { - background-color: #000; - margin: 5px 0 5px 0; - height: 8px; - position: relative; -} -div.article.skin-game .vignette span, -div.article.skin-creative .vignette span, -div.article.skin-entertainment .vignette span { - text-transform: lowercase; - color: #000; - display: block; - margin-left: 15px; - background-color: white; - position: absolute; - top: -6px; - font-size: 12px; - padding: 0 3px 0 3px; - font-weight: 500; -} -div.article.skin-game .vignette, -div.vignette.category-game { - background-color: #fba51e; -} -div.article.skin-creative .vignette, -div.vignette.category-creative { - background-color: #ec008c; -} -div.article.skin-entertainment .vignette, -div.vignette.category-entertainmentlectures { - background-color: #819700; -} -div.article.skin-game .vignette span, -div.vignette.category-game span{ - color: #fba51e; -} -div.article.skin-creative .vignette span, -div.vignette.category-creative span{ - color: #ec008c; -} -div.article.skin-entertainment .vignette span, -div.vignette.category-entertainmentlectures span{ - color: #819700; -} -div.article.skin-info { - background-color: #E6E7E8; - padding-bottom: 40px; -} -div.article.skin-info > div[class^="news"] > span.content-container, -div.article.skin-info > div[class^="news"] > span.title-container { - margin-left: 40px; - margin-right: 40px; -} -div.article.skin-info > div[class^="news"] > span.title-container { - padding-top: 40px; -} -div.article.skin-important > div[class^="news"] > span.img-container, -div.article.skin-info > div[class^="news"] > span.img-container { - margin-bottom: -25px; -} - -/* Modal ------------------------------------------------------- */ -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop { - opacity: 0.8; - filter: alpha(opacity=80); -} -.modal-c { - width: 800px; -} -.modal { - position: absolute; - top: 206px; - z-index: 1050; - width: 800px; - margin: 0 auto; - background-color: #ffffff; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; -} -.modal-body { - padding: 20px; - padding-top: 10px; -} -.modal-body .modal-form { - margin-bottom: 0; -} -.right { - float: right; -} - -/* Video ------------------------------------------------------ */ - -.video h2 { - margin-top: 10px; - margin-bottom: 5px; -} -.tags span { - margin-left: 5px; - padding: 3px 4px; - border: 1px solid #DDD; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.tags span:hover { - background-color: whiteSmoke; -} -.tags span:hover a { - color: black; -} -.tags span a { - color: #07A430; - border-bottom: none !important; -} -.tags span a:hover { - border-bottom: none !important; -} -.tags { - margin-bottom: 20px; -} - -/* Buttons ------------------------------------------------------ */ -.btn.stage, -.btn.stage.active, -.btn.stage:hover, -.btn.game, -.btn.game.active, -.btn.game:hover, -.btn.creative, -.btn.creative.active, -.btn.creative:hover, -.btn.auditorium, -.btn.auditorium.active, -.btn.auditorium:hover { - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - color: white; -} -.btn.stage { - background-color: #ff7800; - background-image: -moz-linear-gradient(top, #ff7800, #db4d00); - background-image: -ms-linear-gradient(top, #ff7800, #db4d00); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff7800), to(#db4d00)); - background-image: -webkit-linear-gradient(top, #ff7800, #db4d00); - background-image: -o-linear-gradient(top, #ff7800, #db4d00); - background-image: linear-gradient(top, #ff7800, #db4d00); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7800', endColorstr='#db4d00', GradientType=0); - border-color: #db4d00 #db4d00 #ca4900; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn.stage:hover, -.btn.stage:active, -.btn.stage.active, -.btn.stage.disabled, -.btn.stage[disabled] { - background-color: #db4d00; -} -.btn.stage:active, .btn.stage.active { - background-color: #e65a99 \9; -} -.btn.game { - background-color: #49afcd; - background-image: -moz-linear-gradient(top, #009cff, #0078c4); - background-image: -ms-linear-gradient(top, #009cff, #0078c4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#009cff), to(#0078c4)); - background-image: -webkit-linear-gradient(top, #009cff, #0078c4); - background-image: -o-linear-gradient(top, #009cff, #0078c4); - background-image: linear-gradient(top, #009cff, #0078c4); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#009cff', endColorstr='#0078c4', GradientType=0); - border-color: #0078c4 #0078c4 #0062a0; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn.game:hover, -.btn.game:active, -.btn.game.active, -.btn.game.disabled, -.btn.game[disabled] { - background-color: #0078c4; -} -.btn.game:active, .btn.game.active { - background-color: #0089e0 \9; -} -.btn.auditorium { - background-color: #49afcd; - background-image: -moz-linear-gradient(top, #f33183, #dc0c64); - background-image: -ms-linear-gradient(top, #f33183, #dc0c64); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f33183), to(#dc0c64)); - background-image: -webkit-linear-gradient(top, #f33183, #dc0c64); - background-image: -o-linear-gradient(top, #f33183, #dc0c64); - background-image: linear-gradient(top, #f33183, #dc0c64); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f33183', endColorstr='#dc0c64', GradientType=0); - border-color: #dc0c64 #dc0c64 #bb004f; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn.auditorium:hover, -.btn.auditorium:active, -.btn.auditorium.active, -.btn.auditorium.disabled, -.btn.auditorium[disabled] { - background-color: #dc0c64; -} -.btn.auditorium:active, .btn.auditorium.active { - background-color: #e81f74 \9; -} -.btn.creative { - background-color: #009997; - background-image: -moz-linear-gradient(top, #009997, #007170); - background-image: -ms-linear-gradient(top, #009997, #007170); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#009997), to(#007170)); - background-image: -webkit-linear-gradient(top, #009997, #007170); - background-image: -o-linear-gradient(top, #009997, #007170); - background-image: linear-gradient(top, #009997, #007170); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#009997', endColorstr='#007170', GradientType=0); - border-color: #007170 #007170 #004e4d; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.btn.creative:hover, -.btn.creative:active, -.btn.creative.active, -.btn.creative.disabled, -.btn.creative[disabled] { - background-color: #007170; -} -.btn.creative:active, .btn.creative.active { - background-color: #007f7d \9; -} -.btn { - display: inline-block; - padding: 4px 10px 4px; - font-size: 13px; - line-height: 18px; - color: #333; - text-align: center; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - background-color: #FAFAFA; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), color-stop(25%, white), to(#E6E6E6)); - background-image: -webkit-linear-gradient(white, white 25%, #E6E6E6); - background-image: -moz-linear-gradient(top, white, white 25%, #E6E6E6); - background-image: -ms-linear-gradient(white, white 25%, #E6E6E6); - background-image: -o-linear-gradient(white, white 25%, #E6E6E6); - background-image: linear-gradient(white, white 25%, #E6E6E6); - background-repeat: no-repeat; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); - border: 1px solid #CCC; - border-bottom-color: #BBB; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - cursor: pointer; -} -.btn:first-child { - *margin-left: 0; -} -.btn:hover { - color: #333333; - text-decoration: none; - background-color: #e6e6e6; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -ms-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} -.btn:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn.active, .btn:active { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - background-color: #e6e6e6; - background-color: #d9d9d9 \9; - color: rgba(0, 0, 0, 0.5); - outline: 0; -} -.btn-group { - position: relative; - *zoom: 1; - *margin-left: .3em; -} -.btn-group:before, .btn-group:after { - display: table; - content: ""; -} -.btn-group:after { - clear: both; -} -.btn-group:first-child { - *margin-left: 0; -} -.btn-group + .btn-group { - margin-left: 5px; -} -.btn-group .btn { - position: relative; - float: left; - margin-left: -1px; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.btn-group .btn:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - border-bottom-left-radius: 4px; -} -.btn-group .btn:last-child, .btn-group .dropdown-toggle { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - border-bottom-right-radius: 4px; -} -.btn-group .btn.large:first-child { - margin-left: 0; - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topleft: 6px; - border-top-left-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - border-bottom-left-radius: 6px; -} -.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle { - -webkit-border-top-right-radius: 6px; - -moz-border-radius-topright: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - -moz-border-radius-bottomright: 6px; - border-bottom-right-radius: 6px; -} -.btn-group .btn:hover, -.btn-group .btn:focus, -.btn-group .btn:active, -.btn-group .btn.active { - z-index: 2; -} -.page a.btn, -.page a.btn::hover { - border-bottom: 1px solid #CCC; -} - -/* Schedule ------------------------------------------------------- */ -a.stage { - color: white; - background-color: #819700; -} -a.game { - color: white; - background-color: #fba51e; -} -a.auditorium { - color: black; - background-color: #d8e600; -} -a.creative { - color: white; - background-color: #ec008c; -} -a.agora { - color: white; - background-color: #2e4f9e; -} -a.remove-filter { - color: white; - background-color: #CCC; -} -.filterLink { - padding: 3px 6px; - margin-right: 5px; - line-height: 28px; -} -.calendar .stage { - color: #819700; - font-size: 25px; -} -.calendar .game { - color: #fba51e; - font-size: 25px; -} -.calendar .auditorium { - color: #d8e600; - font-size: 25px; -} -.calendar .creative { - color: #ec008c; - font-size: 25px; -} -.calendar .agora { - color: #2e4f9e; - font-size: 25px; -} -.calendar tr td { - text-align: left; -} -.calendar td, .calendar td { - min-width: 0; -} -.calendar tbody tr:nth-child(even) td { - background-color: transparent; -} -.calendar tbody tr.odd td { - background-color: #F2F2F2; -} -/* Responsive ------------------------------------------------------- */ -@media (max-width: 1320px) { - footer { - width: 1320px; - } -} -@media (max-width: 1094px) { - div.news-portal-header { - width: 630px; - margin-left: 30px !important; - } - .news100, .clearer, .span19 { width: 630px; } - .span18 { width: 597px; } - .span17 { width: 564px; } - .span16 { width: 531px; } - .span15 { width: 498px; } - .news75, .span14 { width: 465px; } - .span13 { width: 432px; } - .news66, .span-two-third { width: 410px; } - .span12 { width: 399px; } - .span11 { width: 366px; } - .span10 { width: 333px; } - .news50, .span9 { width: 300px; } - .span8 { width: 267px; } - .span7 { width: 234px; } - .span6 { width: 201px; } - .news33, .span-one-third { width: 190px; } - .span5 { width: 168px; } - .news25, .span4 { width: 135px; } - .span3 { width: 102px; } - .span2 { width: 69px; } - .span1 { width: 36px; } - .clearer { margin: 0px 0px 0px 30px !important; } - .full-span9 { width: 1094px; } - .full-span8 { width: 1034x; } - .full-span7 { width: 901px; } - .full-span6 { width: 768px; } - .full-span5 { width: 635px; } - .full-span4 { width: 502px; } - .full-span3 { width: 369px; } - .full-span2 { width: 236px; } - .full-span1 { width: 103px; } - .img-container.news100 img { width: 630px; height: auto; } - .img-container.news75 img { width: 465px; height: auto; } - .img-container.news66 img { width: 410px; height: auto; } - .img-container.news50 img { width: 300px; height: auto; } - .img-container.news33 img { width: 190px; height: auto; } - .img-container.news25 img { width: 135px; height: auto; } - .title-container h2 { - margin-bottom: 4px; - font-size: 19px; - } - h2.size13 { font-size: 9px; } - h2.size14 { font-size: 10px; } - h2.size15 { font-size: 11px; } - h2.size16 { font-size: 12px; } - h2.size17 { font-size: 12px; } - h2.size18 { font-size: 13px; } - h2.size19 { font-size: 14px; } - h2.size20 { font-size: 15px; } - h2.size21 { font-size: 15px; } - h2.size22 { font-size: 16px; } - h2.size23 { font-size: 17px; } - h2.size24 { font-size: 18px; } - h2.size25 { font-size: 18px; } - h2.size26 { font-size: 19px; } - h2.size27 { font-size: 20px; } - h2.size28 { font-size: 21px; } - h2.size29 { font-size: 21px; } - h2.size30 { font-size: 22px; } - h2.size31 { font-size: 23px; } - h2.size32 { font-size: 24px; } - h2.size33 { font-size: 24px; } - h2.size34 { font-size: 25px; } - h2.size35 { font-size: 26px; } - h2.size36 { font-size: 27px; } - h2.size37 { font-size: 27px; } - h2.size38 { font-size: 28px; } - h2.size39 { font-size: 29px; } - h2.size40 { font-size: 30px; } - h2.size41 { font-size: 30px; } - h2.size42 { font-size: 31px; } - h2.size43 { font-size: 32px; } - h2.size44 { font-size: 33px; } - h2.size45 { font-size: 33px; } - h2.size46 { font-size: 34px; } - h2.size47 { font-size: 35px; } - h2.size48 { font-size: 36px; } - h2.size49 { font-size: 36px; } - h2.size50 { font-size: 37px; } - h2.size51 { font-size: 38px; } - h2.size52 { font-size: 39px; } - h2.size53 { font-size: 39px; } - h2.size54 { font-size: 40px; } - h2.size55 { font-size: 41px; } - h2.size56 { font-size: 42px; } - h2.size57 { font-size: 42px; } - h2.size58 { font-size: 43px; } - h2.size59 { font-size: 44px; } - h2.size60 { font-size: 45px; } - h2.size61 { font-size: 45px; } - h2.size62 { font-size: 46px; } - h2.size63 { font-size: 47px; } - h2.size64 { font-size: 48px; } - h2.size65 { font-size: 48px; } - h2.size66 { font-size: 49px; } - h2.size67 { font-size: 50px; } - h2.size68 { font-size: 51px; } - h2.size69 { font-size: 51px; } - h2.size70 { font-size: 52px; } - h2.size71 { font-size: 53px; } - h2.size72 { font-size: 54px; } - h2.size73 { font-size: 54px; } - h2.size74 { font-size: 55px; } - h2.size75 { font-size: 56px; } - h2.size76 { font-size: 57px; } - h2.size77 { font-size: 57px; } - h2.size78 { font-size: 58px; } - h2.size79 { font-size: 59px; } - h2.size80 { font-size: 60px; } - h2.size81 { font-size: 60px; } - h2.size82 { font-size: 61px; } - h2.size83 { font-size: 62px; } - h2.size84 { font-size: 63px; } - h2.size85 { font-size: 63px; } - h2.size86 { font-size: 64px; } - h2.size87 { font-size: 65px; } - h2.size88 { font-size: 66px; } - h2.size89 { font-size: 66px; } - h2.size90 { font-size: 67px; } - h2.size91 { font-size: 68px; } - h2.size92 { font-size: 69px; } - h2.size93 { font-size: 69px; } - h2.size94 { font-size: 70px; } - h2.size95 { font-size: 71px; } - h2.size96 { font-size: 72px; } - h2.size97 { font-size: 72px; } - h2.size98 { font-size: 73px; } - h2.size99 { font-size: 74px; } - h2.size100 { font-size: 75px; } - .content-container p { - font-size: 12px !important; - line-height: 14px !important; - font-weight: 300; - } - .article, .page, .page-right { - margin: 0px 0px 30px 30px; - } - .page div[class^="news"], - div[class^="full-span"], - .page div[class^="span"]{ - margin-left: 30px; - } - .content { - width: 630px; - margin: 0 30px 0 30px; - } - .row { - margin-left: -30px; - } - footer div.row { - margin-left: -15px; - } - .container, footer { - width: 1094px; - } - .sidebar { - width: 202px; - } - .img-container { - margin-bottom: 4px; - } - div[class^="news"] p, - div[class^="full-span"] p, - div[class^="span"] p { - line-height: 18px; - } - div.article.skin-important { - padding-bottom: 30px; - } - div.article.skin-important > div[class^="news"] > span.content-container, - div.article.skin-important > div[class^="news"] > span.title-*, - div.article.skin-info > div[class^="news"] > span.content-container, - div.article.skin-info > div[class^="news"] > span.title-container { - margin-left: 30px; - margin-right: 30px; - } - div.article.skin-important > div[class^="news"] > span.title-container, - div.article.skin-info > div[class^="news"] > span.title-container { - padding-top: 30px; - } - .row.news .page img { - width: 100%; - } - header > div.container .inner { - width: 640px; - } - div.page .span11 img { - max-width: 366px; - height: auto; - } - footer div.row div.row { - margin-left: -30px; - } - div.content > div.row > div.page > img { - width: 630px; - height: auto; - } - div.content > div.row.news > iframe.full { - width: 630px; - margin-left: 30px; - } - #galleria { - width: 630px; - } - .media-page { - margin-left: 30px; - } -} -@media (max-width: 767px) { - .media-page { - margin-left: 0px; - } - div.page.news33.category-news { - margin-bottom: 40px; - } - div.news-portal-header { - width: 100%; - margin-left: 0px !important; - } - .img-container.news100 img, - .img-container.news75 img, - .img-container.news66 img, - .img-container.news50 img, - .img-container.news33 img, - .img-container.news25 img, - div.page .span11 img { - width: 100%; - height: auto; - } - .img-container { width: 100%; } - .img-container a { display:block; width: 100%; } - div[class^="news"], - div[class^="span"], - div[class^="full-span"], - .page div[class^="news"], - .page div[class^="span"], - .clearer, .content, .container, .sidebar, .page, header > div.container .inner, footer { - width: auto; - float: none; - clear: both; - } - .content { - margin: 0px 20px 20px 20px; - } - div.article.skin-important { - padding-bottom: 20px; - } - div.article { - width: 100% !important; - margin-left: 0; - } - .row.news { - margin-left: 0; - } - div.article.skin-important > div[class^="news"] > span.content-container, - div.article.skin-important > div[class^="news"] > span.title-container, - div.article.skin-info > div[class^="news"] > span.content-container, - div.article.skin-info > div[class^="news"] > span.title-container { - width: auto; - margin-left: 10px; - margin-right: 10px; - } - div.article.skin-important > div[class^="news"] > span.title-container, - div.article.skin-info > div[class^="news"] > span.title-container { - padding-top: 20px; - } - .content > div[class^="news"], - div[class^="span"] { - margin: 0 0 0 20px; - } - h2[class^="size"] { - font-size: 15px; - } - .sidebar { - margin: 0 20px 20px 20px; - } - header, footer { - padding: 0 20px 20px 20px; - } - .sidebar.sponsor a { - margin: 0 10px 10px 0; - float: left; - } - .sidebar.sponsor div.vignette { - clear: both; - } - .footnote > div { - width: auto; - display: block; - text-align: center; - } - footer div[class^="full-span"] { - margin-bottom: 20px; - } - .social-news > div { - float: left; - margin-right: 20px; - } - menu.top-menu { - height: 100px; - } - menu.top-menu li { - width: 45%; - float: left; - background-color: #bfd4e5; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - } - menu.top-menu li > a { - color: white; - } - menu.top-menu .top-menu-text { - text-align: center; - margin: 0; - } - menu.top-menu .top-menu-text > span:first-child { - display: block; - font-size: 15px; - line-height: 38px; - } - menu.top-menu > li:nth-child(odd) { - margin-right: 10%; - } - div.top-menu-icon { - display: none; - } - .hidden-phone { - display: none; - } - .visible-phone { - display: block; - } - menu.section-menu { - margin: 20px 0px 0px; - padding: 60px 10px 10px; - background-color: #555; - border-radius: 5px; - color: white; - } - menu.section-menu li { - padding: 6px; - border-radius: 5px; - } - menu.section-menu a, menu.section-menu a:hover { - color: white; - } - div.top-menu-text > span.help-text { - display: none; - } - th, td { - min-width: 0px; - } - .section-menu-button { - float: right; - margin-bottom: 15px; - } - .section-menu-button a { - width: 70px; - height: 50px; - line-height: 50px; - display: block; - text-align: center; - border-radius: 5px; - background-color: #555; - color: white; - } - .section-menu-button a:hover, menu.section-menu li:hover { - background-color: #6f6f6f; - } - h1 { font-size: 25px; line-height: 30px; margin-bottom: 10px; } - h2 { font-size: 20px; line-height: 25px; margin-bottom: 8px;} - h3 { font-size: 15px; line-height: 20px; } - h4 { font-size: 12px; line-height: 17px; } - h5 { font-size: 12px; line-height: 17px; } - h6 { font-size: 12px; line-height: 17px; } - .row.news .page { - margin: 0px; - } - header { - margin-bottom: 0px; - } - menu.top-menu a:hover div.top-menu-text > span, menu.top-menu a:hover div.top-menu-text > span.help-text, div.top-menu-text > span { - color: white; - } - div.logo { - width: 132px; - } - div.logo img { - height: 100px; - } - div.inner div.when { - display: none; - } - div.inner div.right { - float: left; - } - footer > div.container > div.row { - margin-top: 30px; - } - div[class^="full-span"] { - margin: 0px 0px 0px 15px; - } - footer .search input[type="search"]{ - width: 100%; - } - footer .language { - text-align: center; - } - footer > div.container { - padding: 0px 0px 90px 0px; - } - header ul.promo-menu { - padding-top: 20px; - } - footer div.row div.row { - margin-left: -20px; - } - div.content > div.row > div.page > img { - width: 100%; - height: auto; - } - div.content > div.row.news > iframe.full { - width: 100%; - margin-left: 0px; - } - #galleria { - width: 100%; - } - div.calendar table, - div.calendar table thead, - div.calendar table tbody, - div.calendar table th, - div.calendar table td, - div.calendar table tr { - display: block; - } - div.calendar table thead tr { - position: absolute; - top: -9999px; - left: -9999px; - } - div.calendar table td { - border: none; - border-bottom: 1px solid #CCC; - position: relative; - padding-left: 20%; - white-space: normal; - text-align: left; - } - div.calendar table td:before { - position: absolute; - top: 6px; - left: 6px; - width: 45%; - padding-right: 10px; - white-space: nowrap; - text-align:left; - font-weight: bold; - content: attr(data-title); - } - .filterLink { - clear: right; - display: block; - text-align: center; - } - li.menu-creative a, li.menu-creative span, li.menu-creative + menu.sub-menu a, li.menu-creative + menu.submenu span, - li.menu-game a, li.menu-game span, li.menu-game + menu.sub-menu a, li.menu-game + menu.submenu span, - li.menu-tickets a, li.menu-tickets span, li.menu-tickets + menu.sub-menu a, li.menu-tickets + menu.submenu span, - li.menu-guide a, li.menu-guide span, li.menu-guide + menu.sub-menu a, li.menu-guide + menu.submenu span, - li.menu-entertainment-lectures a, li.menu-entertainment-lectures span, li.menu-entertainment-lectures + menu.sub-menu a, li.menu-entertainment-lectures + menu.submenu span { - color: white; - } -} diff --git a/web/stream.gathering.org/pre-tg15/superawesomeness.css b/web/stream.gathering.org/pre-tg15/superawesomeness.css deleted file mode 100644 index b8c5545..0000000 --- a/web/stream.gathering.org/pre-tg15/superawesomeness.css +++ /dev/null @@ -1,24 +0,0 @@ -* { font-family: 'Open Sans', sans-serif; - -} - -body { - background: #fff; color: #000; opacity: 1; -} - -#spaceship { background: url('singularity.png'); width: 237px; height: 200px;position:absolute; top: 0; right: 0;z-index: -1} - -@media screen and (max-width: 1145px) { /* Min iPad size*/ - #spaceship { - background: #fff; - } -} - - -/* #innhold { position: absolute; left:0px ; top: 50px; margin: 0 50px 0 50px; z-index: 9; width: 520px; }*/ -#innhold { width: 480px; } -footer { clear: both; width:480px; } -a { color: #000; } -h4 { margin: 0; margin-top: 35px;} -p { margin: 0; padding: 0; } -li { margin-bottom: 14px; } diff --git a/web/stream.gathering.org/pre-tg15/test.pl b/web/stream.gathering.org/pre-tg15/test.pl deleted file mode 100755 index 3b440d5..0000000 --- a/web/stream.gathering.org/pre-tg15/test.pl +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/perl -I /srv/streamlib -use warnings; -use strict; -use CGI; -use Geo::IP; -use NetAddr::IP; -use Net::IP; -# apt-get install libnet-ip-perl libnetaddr-ip-perl -use HTML::Template; -use stream; -use stream::config; - -my $client = CGI->new; - -my $v4net = $stream::config::v4net; -my $v6net = $stream::config::v6net; -my $tg = $stream::config::tg; -my $tg_full = $stream::config::tg_full; -my %streams = %stream::config::streams; - -my $force_unicast = $client->param('forceunicast'); - -my $location = undef; - -print $client->header(); - -my $clip = $client->remote_addr(); -my $template = HTML::Template->new(filename => 'test.tmpl'); -my $is_local = &is_ip_local($clip, $v4net, $v6net); - -my @streams = &html_local_test(); -$template->param(TG => $tg); -$template->param(TG_FULL => $tg_full); -$template->param(STREAMS => \@streams); -print $template->output(); - - -sub html_local_test() { - my @s = (); - foreach my $name (sort { $streams{$a}->{priority} <=> $streams{$b}->{priority} } keys %streams) { - my $title_link = "http://stream.tg$tg.gathering.org/stream.pl?delivery=%s&stream=${name}&interlaced=%s"; - my $multicast_link = $streams{$name}->{has_multicast} ? "multicast" : "unicast"; - $multicast_link = "unicast" if ($force_unicast == 1 || not $is_local); - - if ($streams{$name}->{external}) { - $title_link = $streams{$name}->{url}; - } else { - $title_link = sprintf($title_link, $multicast_link, $streams{$name}->{interlaced}); - } - my %hash = ( - 'title_link' => $title_link, - 'title' => $streams{$name}->{title}, - 'source' => $streams{$name}->{source}, - 'quality' => $streams{$name}->{quality}, - 'location' => $streams{$name}->{location}, - 'type' => $streams{$name}->{type}, - 'delivery' => $multicast_link, - ); - if ($multicast_link eq "multicast") { - $hash{'is_multicast'} .= 1; - my $unicast_link = $title_link; - $unicast_link=~s/multicast/unicast/g; - $hash{'unicast_link'} .= $unicast_link; - } - $hash{'description'} .= $streams{$name}->{description} if exists($streams{$name}->{description}); - push(@s, \%hash); - - } - return @s; -} diff --git a/web/stream.gathering.org/pre-tg15/test.tmpl b/web/stream.gathering.org/pre-tg15/test.tmpl deleted file mode 100644 index fe88674..0000000 --- a/web/stream.gathering.org/pre-tg15/test.tmpl +++ /dev/null @@ -1,31 +0,0 @@ -<html> -<head> - <title>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</title> - <link rel="stylesheet" type="text/css" href="style.css" media="all"> -</head> -<body> - <div id="innhold"> - <h1>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</h1> - <TMPL_LOOP NAME="STREAMS"> - <div class="stream-link"> - <div class="stream-icon"><img src="img/icon_<TMPL_VAR NAME=QUALITY>.png" /> <img src="img/icon_<TMPL_VAR NAME=TYPE>.png" /> <TMPL_IF NAME=LOCATION><img src="img/icon_<TMPL_VAR NAME=LOCATION>.png"></TMPL_IF></div> - <div class="stream-link-content"> - <a href="<TMPL_VAR NAME=TITLE_LINK>"><TMPL_VAR NAME=TITLE></a><br> - Source: <TMPL_VAR NAME=SOURCE><br> - Delivery: <TMPL_VAR NAME=delivery> <TMPL_IF NAME=IS_MULTICAST>(<a href='<TMPL_VAR NAME=UNICAST_LINK>'>problems? try unicast vlc link here</a>)</TMPL_IF> - </div> - </div> - </TMPL_LOOP> - <div id="map"> - <img src="img/cam-map.png"> - </div> - - </div> - - <p>Problems with the non game streams? The easiest way to get hold of us is on IRC (EFNet); one of ViD, Rockj and Sesse should be available if there's too much traffic on #tg to be heard.</p> - <p><a href="http://stream.tg<TMPL_VAR NAME="TG">.gathering.org">http://stream.tg<TMPL_VAR NAME="TG">.gathering.org</a></p> - -</body> -</html> - - diff --git a/web/stream.gathering.org/resources/css/core.css b/web/stream.gathering.org/resources/css/core.css index 5a7a6f0..536cb89 100644 --- a/web/stream.gathering.org/resources/css/core.css +++ b/web/stream.gathering.org/resources/css/core.css @@ -3,6 +3,19 @@ body { color: #FFFFFF; } +*:fullscreen { + position:fixed; + top:0; + right:0; + bottom:0; + left:0; + margin:0; + box-sizing: border-box; + width:100%; + height:100%; + object-fit: contain; +} + .button { font-weight: bold; color: #333; @@ -66,6 +79,8 @@ body { } .stream-icon { + width: 51px; + height: 52px; display: inline-block; } @@ -90,6 +105,48 @@ body { padding-top: 50px; } +.bubble +{ + position: relative; + width: 100%; + height: 100%; + padding: 0px; + background: #FFFFFF; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + border: #7F7F7F solid 2px; + padding: 10px; +} + + .bubble:after + { + content: ''; + position: absolute; + border-style: solid; + border-width: 16px 12px 0; + border-color: #FFFFFF transparent; + display: block; + width: 0; + z-index: 1; + bottom: -15px; + left: 130px; + } + + .bubble:before + { + content: ''; + position: absolute; + border-style: solid; + border-width: 17px 13px 0; + border-color: #7F7F7F transparent; + display: block; + width: 0; + z-index: 0; + bottom: -19px; + left: 129px; + } + /* Bigger than 550 */ @media (min-width: 550px) { .section { @@ -110,6 +167,8 @@ body { .videoframe { margin-left: -160px; } + .videoframe:-webkit-full-screen { margin-left: 0px; } + .videoframe:-moz-full-screen { margin-left: 0px; } } /* Bigger than 920 */ @@ -132,6 +191,8 @@ body { .videoframe { margin-left: -250px; } + .videoframe:-webkit-full-screen { margin-left: 0px; } + .videoframe:-moz-full-screen { margin-left: 0px; } } /* Bigger than 1200 */ @@ -152,6 +213,8 @@ body { .videoframe { margin-left: -350px; } + .videoframe:-webkit-full-screen { margin-left: 0px; } + .videoframe:-moz-full-screen { margin-left: 0px; } } /* Bigger than 1600 */ @@ -174,4 +237,6 @@ body { .videoframe { margin-left: -480px; } + .videoframe:-webkit-full-screen { margin-left: 0px; } + .videoframe:-moz-full-screen { margin-left: 0px; } }
\ No newline at end of file diff --git a/web/stream.gathering.org/resources/images/vlc.png b/web/stream.gathering.org/resources/images/vlc.png Binary files differnew file mode 100644 index 0000000..129ab76 --- /dev/null +++ b/web/stream.gathering.org/resources/images/vlc.png diff --git a/web/stream.gathering.org/southcam.vlc b/web/stream.gathering.org/southcam.vlc new file mode 100644 index 0000000..e20970c --- /dev/null +++ b/web/stream.gathering.org/southcam.vlc @@ -0,0 +1,3 @@ +#EXTM3U +#EXTINF:-1,TG15 Unicasted South Webcam HD (720p H.264) 3Mbit/s +http://cubemap.tg15.gathering.org/southcam.flv diff --git a/web/streamlib/stream/config.pm b/web/streamlib/stream/config.pm index 918e555..934c99d 100644 --- a/web/streamlib/stream/config.pm +++ b/web/streamlib/stream/config.pm @@ -6,7 +6,7 @@ use NetAddr::IP; our $v4net = NetAddr::IP->new("151.216.128.0/17"); our $v6net = NetAddr::IP->new("2a02:ed02::/32"); our $multicast = "udp://\@233.191.12.1"; -our $video_url = "http://wat.gathering.org:9094/southcam.flv"; +our $video_url = "http://cubemap.tg15.gathering.org/event.flv"; our $tg = 15; our $tg_full = 2015; @@ -23,13 +23,14 @@ our %streams = ( 'quality' => 'hd', 'priority' => 20, 'port' => 80, - 'url' => '/event.ts', - 'online' => 0, + 'url' => 'http://cubemap.tg15.gathering.org/event.flv', + 'online' => 1, + 'external' => 1, 'interlaced' => 0, 'has_multicast' => 0, 'multicast_ip' => 'udp://@[ff7e:a40:2a02:ed02:ffff::15]:2015', 'source' => 'Event', - 'title' => 'Event HD (720p50)' + 'title' => 'Event HD (720p50 H.264) 6Mbit/s' }, # 'creativia-hd' => { # 'type' => 'event', @@ -86,15 +87,15 @@ our %streams = ( 'type' => 'camera', 'quality' => 'hd', 'priority' => 40, - 'url' => "http://wat.gathering.org:9094/southcam.flv", # <-- In use (Need to rebuild row 67 in index.pl) - 'port' => 80, + 'url' => "http://cubemap.tg15.gathering.org/southcam.flv", # <-- In use (Need to rebuild row 67 in index.pl) + 'port' => 80, 'interlaced' => 0, 'has_multicast' => 0, 'external' => 1, # <-- In use (Need to rebuild row 67 in index.pl) 'online' => 1, # 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::16]", 'source' => 'Tech', - 'title' => 'Webcam South (HD) (1920x1080 H.264) 10mbps', + 'title' => "Webcam South (HD) (720p H.264) 3Mbit/s", }, 'roofcam-raw' => { @@ -115,7 +116,7 @@ our %streams = ( 'type' => 'camera', 'quality' => 'hd', 'priority' => 130, - 'url' => 'http://wat.gathering.org:9094/noccam.flv', + 'url' => 'http://cubemap.tg15.gathering.org/noccam.flv', 'port' => 80, # <-- Safe to remove 'external' => 1, 'has_multicast' => 0, # <-- Safe to remove @@ -123,7 +124,7 @@ our %streams = ( 'online' => 1, 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::18]:2018",# <-- Safe to remove 'source' => "Tech", # <-- Safe to remove - 'title' => "Webcam NOC (HD) (1280x720 H.264) 5mbps" + 'title' => "Webcam NOC (HD) (720p H.264) 3Mbit/s" }, ); |