| excludeFromSuggestions=true | 
 | fullpage=true | 
 | page.title=Google I/O 13 | 
 | @jd:body | 
 |      | 
 | <style> | 
 | #ioplayer-frame { | 
 |   z-index:10; | 
 |   width:703px; | 
 |   height:396px; | 
 |   margin:0; | 
 |   position:relative; | 
 | } | 
 |  | 
 | #noplayer-message { | 
 |   position:absolute; | 
 |   top:50%;left:0; | 
 |   width:100%; | 
 |   z-index:-1; | 
 |   text-align:center; | 
 |   display:none; | 
 | } | 
 |  | 
 | h1 { | 
 |   font-weight:100; | 
 |   font-size:40px; | 
 |   line-height:30px; | 
 |   margin:30px 0 10px 0px; | 
 |   color:#000; | 
 | } | 
 |  | 
 | h2 { | 
 |   font-weight:100; | 
 |   font-size:30px; | 
 |   line-height:30px; | 
 |   margin:12px 0 10px 0px; | 
 |   color:#000; | 
 |   float:left; | 
 |   display:block; | 
 | } | 
 |  | 
 | .col-4 h2 { | 
 |   margin-top:40px; | 
 | } | 
 |  | 
 | ul.videos { | 
 |   list-style:none; | 
 |   margin:0; | 
 |   width:auto; | 
 | } | 
 | ul.videos li { | 
 |   display:block; | 
 |   float:left; | 
 |   position:relative; | 
 |   margin:0 2px 2px 0; | 
 |   background-repeat:no-repeat !important; | 
 |   background-size:320px auto; | 
 |   background-position:10% 50%; | 
 |   z-index:1; /* IE: the description is 2 */ | 
 | } | 
 | ul.videos li a { | 
 |   color:#fff !important; | 
 |   display:block; | 
 |   margin:0; | 
 |   padding:8px 12px; | 
 |   width:209px; | 
 |   height:134px; | 
 |   box-shadow:inset 500px 500px 999px rgba(000, 000, 000, 0.2); | 
 |   background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(0,0,0,0.8)), color-stop(1, transparent)); | 
 |   background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.8), transparent); | 
 |   background-image: -moz-linear-gradient(top, rgba(0,0,0,0.8), transparent); | 
 |   background-image: -o-linear-gradient(top, rgba(0,0,0,0.8), transparent); | 
 |   background-image: linear-gradient(to bottom, rgba(0,0,0,0.8), transparent); | 
 |   filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc000000', endColorstr='#00ffffff',GradientType=0 ); /* IE6-9 */ | 
 | } | 
 | ul.videos.featured li { | 
 |   margin:0 0 2px; | 
 | } | 
 | ul.videos.featured li a { | 
 |   margin:0; | 
 |   height:115px; | 
 | } | 
 | ul.videos li a:hover { | 
 |   box-shadow:inset 500px 500px 999px rgba(255,255,255, 0.6); | 
 | } | 
 | ul.videos li h4 { | 
 |   text-shadow:1px 1px 0 rgba(0,0,0,0.8); | 
 |   font-size:18px; | 
 |   line-height:22px; | 
 |   color:#fff; | 
 |   margin:0; | 
 |   height:100%; /* IE: to fill clickable area */ | 
 | } | 
 |  | 
 | ul.videos li .description-frame { | 
 |   display:none; | 
 |   z-index:2; /* IE: the li is 1 */ | 
 | } | 
 | ul.videos li a:hover .description-frame { | 
 |   display:block; | 
 |   position:absolute; | 
 |   top:80px; | 
 |   left:8px; | 
 |   z-index:99; | 
 | } | 
 | ul.videos .description { | 
 |   background:#fff; | 
 |   width:200px; | 
 |   padding:8px; | 
 |   -webkit-border-radius:1px; | 
 |   -moz-border-radius:1px; | 
 |   border-radius:1px; | 
 |   -moz-box-shadow: 0 2px 3px 2px rgba(000,000,000, 0.4); | 
 |   -webkit-box-shadow: 0 2px 3px 2px rgba(000,000,000, 0.4); | 
 |   box-shadow: 0 2px 3px 2px rgba(000,000,000, 0.4); | 
 |   font-size:11px; | 
 |   line-height:12px; | 
 |   color:#000; | 
 |   overflow:hidden; | 
 | } | 
 | ul.videos .arrow-up { | 
 |   position:absolute; | 
 |   left:15px; | 
 |   top:-11px; | 
 |   width:0; | 
 |   height:0; | 
 |   border-bottom:12px solid #fff; | 
 |   border-left:12px solid transparent; | 
 |   border-right:12px solid transparent; | 
 | } | 
 | ul.videos .arrow-down { | 
 |   position:absolute; | 
 |   left:15px; | 
 |   bottom:-11px; | 
 |   width:0; | 
 |   height:0; | 
 |   border-top:12px solid #fff; | 
 |   border-left:12px solid transparent; | 
 |   border-right:12px solid transparent; | 
 | } | 
 |  | 
 | ul.videos span.tag { | 
 |   font-size:.9em; | 
 |   font-weight:normal; | 
 |   display: block; | 
 |   position: absolute; | 
 |   bottom: 0; | 
 |   color: #fff; | 
 |   left: 0; | 
 |   padding: 4px; | 
 |   border-top-right-radius:4px; | 
 |   text-transform:uppercase; | 
 |   text-shadow: none; | 
 | } | 
 | ul.videos span.tag.design { | 
 |   background-color:rgba(51, 181, 229, .7); | 
 |   filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc33b5e5', endColorstr='#cc33b5e5',GradientType=0 ); /* IE6-9 */ | 
 | } | 
 | ul.videos span.tag.develop { | 
 |   background-color:rgba(255, 136, 0, .7); | 
 |   filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ccff8800', endColorstr='#ccff8800',GradientType=0 ); /* IE6-9 */ | 
 | } | 
 | ul.videos span.tag.distribute { | 
 |   background-color:rgba(153, 204, 0, .7); | 
 |   filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cc99cc00', endColorstr='#cc99cc00',GradientType=0 ); /* IE6-9 */ | 
 | } | 
 |  | 
 | </style> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 | <div class="wrap"> | 
 |  | 
 |   <div class="col-12" style="width:704px;margin:0"> | 
 |     <h1>Android @ Google I/O 13</h1> | 
 |     <div id="ioplayer-frame"> | 
 |       <div id="noplayer-message"> | 
 |         <!-- busted flash player message --> | 
 |         Your video is supposed to appear here.<br/> | 
 |         Make sure you have the <a href="//get.adobe.com/flashplayer/" target="_blank">Flash® Player</a>. | 
 |       </div> | 
 |       <div id="player"><!-- Youtube embeds here... actually replaces this div --></div> | 
 |     </div> | 
 |   </div> | 
 |  | 
 |   <div class="col-4" style="margin:0;width:234px;padding:0 0 0 2px"> | 
 |     <h2 class="norule">Most Popular</h2> | 
 |     <ul class="videos featured" id="playlist2"> | 
 |     </ul> | 
 |   </div> | 
 | </div> | 
 |  | 
 | <div class="wrap"> | 
 |  | 
 |     <div style="position:absolute;width:940px;text-align:right"> | 
 |       <a href="//www.youtube.com/AndroidDevelopers" target="_blank"> | 
 |       More on YouTube | 
 |         <img src="//www.youtube.com/favicon.ico" style="border:0;width:16px;height:16px;vertical-align:middle;margin:0 2px 3px 2px"> | 
 |       </a> | 
 |     </div> | 
 |   <div style="width:944px;overflow:hidden;padding:0 0 20px"> | 
 |     <h2 class="norule">All Videos</h2> | 
 |     <ul class="videos" id="playlist1" style="clear:left"> | 
 |       <span id="videos-design"></span> | 
 |       <span id="videos-develop"></span> | 
 |       <span id="videos-distribute"></span> | 
 |     </ul> | 
 |   </div> | 
 |  | 
 | </div> | 
 |  | 
 | <br class="clearfix"/> | 
 |  | 
 |        | 
 |        | 
 |        | 
 |        | 
 |        | 
 |        | 
 |        | 
 |        | 
 |        | 
 |  | 
 | <script src="//swfobject.googlecode.com/svn/trunk/swfobject/swfobject.js" type="text/javascript"></script> | 
 | <script type="text/javascript"> | 
 |  | 
 | /* Load a video into the player box. | 
 |  * @param id        The YouTube video ID | 
 |  * @param title     The video title to display in the player box (character escaped) | 
 |  * @param autoplay  Whether to automatically play the video | 
 |  */ | 
 | function loadVideo(id, title, autoplay) { | 
 |   var url = '//www.youtube.com/v/' + id + '&rel=1&border=0&fs=1' + (autoplay?'&autoplay=1':''); | 
 |   swfobject.embedSWF(url, 'player', '704', '397', '9.0.0', false, false, {allowfullscreen: 'true'}); | 
 |   $('body,html').animate({ scrollTop: 0 }, "slow"); | 
 |   setTimeout(function(){$('#noplayer-message').show()}, 2000); | 
 | } | 
 |  | 
 |  | 
 | function buildPlaylistDesign(data) { | 
 |   buildPlaylist(data, $('ul#playlist1 #videos-design'), "design"); | 
 | } | 
 |  | 
 | function buildPlaylistDevelop(data) { | 
 |   buildPlaylist(data, $('ul#playlist1 #videos-develop'), "develop"); | 
 | } | 
 |  | 
 | function buildPlaylistDistribute(data) { | 
 |   buildPlaylist(data, $('ul#playlist1 #videos-distribute'), "distribute"); | 
 | } | 
 |  | 
 | function buildPlaylist2(data) { | 
 |   buildPlaylist(data, $('ul#playlist2')); | 
 | } | 
 |  | 
 | function buildPlaylist(data, ul, tag) { | 
 |  | 
 |   var MAX_DESC_LENGTH = 200; // the length at which we will trim the description | 
 |   var feed = data.feed; | 
 |   var entries = feed.entry || []; | 
 |   var playlistId = feed.yt$playlistId.$t; | 
 |  | 
 |   // Loop through each entry (each video) and add it to the '#DevelopersLive' list | 
 |   for (var i = 0; i < entries.length; i++) { | 
 |     var entry = entries[i]; | 
 |     var title = entry.title.$t; | 
 |     var id = entry.media$group.yt$videoid.$t; | 
 |     // get 180x320 thumbnail | 
 |     var thumbs = entry.media$group.media$thumbnail; | 
 |     var thumbUrl; | 
 |     for (var j = 0; j < thumbs.length; j++) { | 
 |       if (thumbs[j].yt$name == "hqdefault") { | 
 |         thumbUrl = thumbs[j].url; | 
 |       } | 
 |     } | 
 |  | 
 |     // chop out the google io title | 
 |     title = title.substr(title.indexOf("-") + 1, title.length); | 
 |  | 
 |     var fullDescription = entry.media$group.media$description.$t; | 
 |     var playerUrl = entry.media$group.media$content[0].url; | 
 |     var shortDescription = fullDescription.substr(0, MAX_DESC_LENGTH); | 
 |     // further shorten description if there's a url (remove it) | 
 |     var httpindex = shortDescription.indexOf("http://"); | 
 |     if (httpindex != -1) { | 
 |       shortDescription = shortDescription.substring(0,httpindex); | 
 |     } | 
 |     shortDescription += shortDescription.length == MAX_DESC_LENGTH ? "..." : ""; // add ellipsis if we've chopped the description | 
 |  | 
 |     var a = $('<a href="#" id="' + id + '" ' | 
 |           + 'onclick="loadVideo(\'' + id + '\',\'' + escape(title) + '\',true); return false;" />'); | 
 |     var pShortDescription = $('<div class="description-frame"><div class="arrow-up"></div>' | 
 |           + '<div class="description">' + shortDescription + '</div></div>'); | 
 |     var h4Title = "<h4>" + title + "</h4>"; | 
 |     var li = $('<li style="background-image:url(\'' + thumbUrl +'\')" />'); | 
 |  | 
 |     li.append(a); | 
 |     a.append(h4Title).append(pShortDescription); | 
 |  | 
 |     if (tag !== undefined) { | 
 |       var $tag = $('<span class="tag ' + tag + '">' + tag + '</span>'); | 
 |       a.append($tag); | 
 |     } | 
 |  | 
 |     ul.append(li); | 
 |  | 
 |  | 
 |     // put the first video in the player  | 
 |     if ((tag == "design") && (i == 0)) { | 
 |       loadVideo(id, escape(title), false); | 
 |     } | 
 |   } | 
 | } | 
 |  | 
 |  | 
 | /* Request the playlist feeds from YouTube */ | 
 | function showDevelopersLivePlaylist() { | 
 |   var playlistId = "PLWz5rJ2EKKc-qVhMuAprIFYFbCotdgJKq"; /* IO 13 - Design */ | 
 |   $.getScript("//gdata.youtube.com/feeds/api/playlists/" | 
 |           + playlistId + | 
 |           "?v=2&alt=json-in-script&max-results=50&callback=buildPlaylistDesign&orderby=position"); | 
 |  | 
 |   playlistId = "PLWz5rJ2EKKc9rkwO9yBosRvkQBJd5utmR"; /* IO 13 - Develop */ | 
 |   $.getScript("//gdata.youtube.com/feeds/api/playlists/" | 
 |           + playlistId + | 
 |           "?v=2&alt=json-in-script&max-results=50&callback=buildPlaylistDevelop&orderby=position"); | 
 |  | 
 |   playlistId = "PLWz5rJ2EKKc-1WjgQqL0B4OQtbLfhMlB2"; /* IO 13 - Distribute */ | 
 |   $.getScript("//gdata.youtube.com/feeds/api/playlists/" | 
 |           + playlistId + | 
 |           "?v=2&alt=json-in-script&max-results=50&callback=buildPlaylistDistribute&orderby=position"); | 
 |  | 
 |  | 
 |   playlistId = "PLWz5rJ2EKKc9WGUwq2gQ-coU3fSyexgOx"; /* IO 13 - The Android Sessions */ | 
 |   $.getScript("//gdata.youtube.com/feeds/api/playlists/" | 
 |           + playlistId + | 
 |           "?v=2&alt=json-in-script&max-results=3&callback=buildPlaylist2&orderby=viewCount"); | 
 | } | 
 |  | 
 | showDevelopersLivePlaylist(); | 
 |  | 
 |  | 
 | </script> |