Revert "Merge "Resolve merge conflicts of a5f0068 to nyc-dev" into nyc-dev"

This reverts commit 6edfbfabad1ddbda00e0fcc713672f6e63acdf44, reversing
changes made to e09b2c16e32cee89d6b5ac29fe5a905b76872179.
diff --git a/tools/droiddoc/templates-sdk/assets/css/default.css b/tools/droiddoc/templates-sdk/assets/css/default.css
index accf7bf..ccaa007 100644
--- a/tools/droiddoc/templates-sdk/assets/css/default.css
+++ b/tools/droiddoc/templates-sdk/assets/css/default.css
@@ -732,7 +732,7 @@
     text-align:center;
     width: 50%;
   }
-
+  
   .training-nav-top a.prev-page-link {
     padding-left: 15px;
     text-align: left;
@@ -840,7 +840,7 @@
     margin: 0 0 6px;
     line-height: 16px;
   }
-
+  
   /* Class colors */
   ol.class-list li:nth-child(10n+1) .title {
     background: #00bcd4;
@@ -872,7 +872,7 @@
   ol.class-list li:nth-child(10n+10) .title {
     background: #7e57c2;
   }
-
+  
   @media (max-width: 719px) {
     ol.class-list ol,
     ol.class-list .description {
@@ -2628,20 +2628,6 @@
   margin-bottom:0;
 }
 
-.summary-table {
-  background-color:#e1e4e6;
-  padding:1em;
-  margin-bottom:1.5em;
-}
-.summary-table p {
-  font-size:.98em;
-}
-
-.summary-table h5 {
-  line-height:1em;
-  font-size:.98em;
-}
-
 body.about blockquote {
   display:block;
   float:right;
@@ -3344,7 +3330,7 @@
 h4.jd-details-title {
   font-size:1.15em;
   background-color: #E2E2E2;
-  margin:4em 0 .6em;
+  margin:1.5em 0 .6em;
   padding:3px 95px 3px 3px; /* room for api-level */
 }
 body.google h4.jd-details-title {
@@ -6376,13 +6362,9 @@
 .dac-button.dac-raised.dac-primary, .landing-secondary, .button {
   background-color: #039bef; }
   .dac-button.dac-raised.dac-primary:hover, .landing-secondary:hover, .button:hover {
-    background-color: #0288d1;
-    color:#fff; }
+    background-color: #0288d1; color:#fff; }
   .dac-button.dac-raised.dac-primary:active, .landing-secondary:active, .button:active {
-    background-color: #0277bd;
-    color:#fff; }
-  .dac-button.dac-raised.dac-primary.disabled, .button.disabled {
-    background-color: #bbb; }
+    background-color: #0277bd; }
 
 .dac-button.dac-raised.dac-red, .landing-primary {
   background-color: #bf3722; }
@@ -7787,20 +7769,6 @@
   text-align: center;
 }
 
-/* Android Studio download page */
-section#features {
-  padding-top:0;
-}
-.wrap.feature {
-  margin:80px auto;
-}
-.dac-section-links.feature-more {
-  margin-top:-20px;
-}
-.dac-toggle-content .wrap.feature {
-  margin-top:0;
-}
-
 @media (max-width: 719px) {
   .dac-hero-figure {
     height: 150px;
@@ -7810,17 +7778,6 @@
   .dac-hero-figure img {
     max-height: 150px;
   }
-
-  /* Android Studio download page */
-  .feature .dac-hero-figure,
-  .feature .dac-hero-figure img {
-    height:auto;
-    max-height:none;
-  }
-  .feature .dac-hero-figure img {
-    width:90%;
-    margin:0 auto;
-  }
 }
 
 .dac-hero-carousel {
@@ -8899,85 +8856,4 @@
   .dac-hero-cta.mprev {
   white-space:nowrap;
   }
-}
-
-/** Custom search API styles */
-.dac-custom-search {
-  background: #fff;
-  margin: 0 -10px;
-  padding: 20px 10px;
-  z-index: 1;
-}
-
-.dac-custom-search-section-title {
-  color: #505050;
-}
-
-.dac-custom-search-entry {
-  margin-bottom: 36px;
-  margin-top: 24px;
-}
-
-.dac-custom-search-image {
-  background-size: cover;
-  height: 112px;
-}
-
-@media (max-width: 719px) {
-  .dac-custom-search-image {
-    display: none;
-  }
-}
-
-.dac-custom-search-title {
-  color: #333;
-  font-size: 14px;
-  font-weight: 700;
-  line-height: 24px;
-  margin: 0;
-  padding: 0;
-}
-
-.dac-custom-search-title a {
-  color: inherit;
-}
-
-.dac-custom-search-section {
-  color: #999;
-  font-size: 16px;
-  font-variant: small-caps;
-  font-weight: 700;
-  margin: -5px 0 0 0;
-}
-
-.dac-custom-search-snippet {
-  color: #666;
-  margin: 0;
-}
-
-.dac-custom-search-link {
-  font-weight: 500;
-  word-wrap: break-word;
-  width: 100%;
-}
-
-.dac-custom-search-load-more {
-  background: none;
-  border: none;
-  color: #333;
-  cursor: pointer;
-  display: block;
-  font-size: 14px;
-  font-weight: 700;
-  margin: 75px auto;
-  outline: none;
-  padding: 10px;
-}
-
-.dac-custom-search-load-more:hover {
-  opacity: 0.7;
-}
-
-.dac-custom-search-no-results {
-  color: #999;
-}
+}
\ No newline at end of file
diff --git a/tools/droiddoc/templates-sdk/assets/js/docs.js b/tools/droiddoc/templates-sdk/assets/js/docs.js
index c4a8150..d88c0e6 100644
--- a/tools/droiddoc/templates-sdk/assets/js/docs.js
+++ b/tools/droiddoc/templates-sdk/assets/js/docs.js
@@ -985,7 +985,7 @@
     }
     // get the selected item's offset from its container nav by measuring the item's offset
     // relative to the document then subtract the container nav's offset relative to the document
-    var selectedOffset = $selected.offset().top - $nav.offset().top + 60;
+    var selectedOffset = $selected.offset().top - $nav.offset().top;
     if (selectedOffset > $nav.height() * .8) { // multiply nav height by .8 so we move up the item
                                                // if it's more than 80% down the nav
       // scroll the item up by an amount equal to 80% the container nav's height
@@ -1328,7 +1328,7 @@
 function changeNavLang(lang) {
   if (lang === 'en') { return; }
 
-  var $links = $("a[" + lang + "-lang],p[" + lang + "-lang]");
+  var $links = $('a[' + lang + '-lang]');
   $links.each(function(){ // for each link with a translation
     var $link = $(this);
     // put the desired language from the attribute as the text
@@ -1386,7 +1386,7 @@
     $(".toggle-content-text:eq(0)", obj).toggle();
     div.removeClass("closed").addClass("open");
     $(".toggle-content-img:eq(0)", div).attr("title", "hide").attr("src", toRoot
-                  + "assets/images/styles/disclosure_up.png");
+                  + "assets/images/triangle-opened.png");
   } else { // if it's open, close it
     toggleMe.slideUp('fast', function() {  // Wait until the animation is done before closing arrow
       $(".toggle-content-text:eq(0)", obj).toggle();
@@ -1394,7 +1394,7 @@
       div.find(".toggle-content").removeClass("open").addClass("closed")
               .find(".toggle-content-toggleme").hide();
       $(".toggle-content-img", div).attr("title", "show").attr("src", toRoot
-                  + "assets/images/styles/disclosure_down.png");
+                  + "assets/images/triangle-closed.png");
     });
   }
   return false;
@@ -2548,13 +2548,12 @@
 function submit_search() {
   var query = document.getElementById('search_autocomplete').value;
   location.hash = 'q=' + query;
-  searchControl.query = query;
-  searchControl.init();
-  searchControl.trackSearchRequest(query);
+  loadSearchResults();
   $("#searchResults").slideDown('slow', setStickyTop);
   return false;
 }
 
+
 function hideResults() {
   $("#searchResults").slideUp('fast', setStickyTop);
   $("#search-close").addClass("hide");
@@ -2563,248 +2562,119 @@
   $("#search_autocomplete").val("").blur();
 
   // reset the ajax search callback to nothing, so results don't appear unless ENTER
-  searchControl.reset();
+  searchControl.setSearchStartingCallback(this, function(control, searcher, query) {});
+
+  // forcefully regain key-up event control (previously jacked by search api)
+  $("#search_autocomplete").keyup(function(event) {
+    return search_changed(event, false, toRoot);
+  });
 
   return false;
 }
 
+
+
 /* ########################################################## */
 /* ################  CUSTOM SEARCH ENGINE  ################## */
 /* ########################################################## */
-var searchControl = null;
-var dacsearch = dacsearch || {};
 
-/**
- * The custom search engine API.
- * @constructor
- */
-dacsearch.CustomSearchEngine = function() {
-  /**
-   * The last response from Google CSE.
-   * @private {Object}
-   */
-  this.resultQuery_ = {};
+var searchControl;
+google.load('search', '1', {"callback" : function() {
+            searchControl = new google.search.SearchControl();
+          } });
 
-  /** @private {?Element} */
-  this.searchResultEl_ = null;
+function loadSearchResults() {
+  document.getElementById("search_autocomplete").style.color = "#000";
 
-  /** @private {?Element} */
-  this.searchInputEl_ = null;
+  searchControl = new google.search.SearchControl();
 
-  /** @private {string} */
-  this.query = '';
-};
+  // use our existing search form and use tabs when multiple searchers are used
+  drawOptions = new google.search.DrawOptions();
+  drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED);
+  drawOptions.setInput(document.getElementById("search_autocomplete"));
 
-/**
- * Initializes DAC's Google custom search engine.
- * @export
- */
-dacsearch.CustomSearchEngine.prototype.init = function() {
-  this.searchResultEl_ = $('#leftSearchControl');
-  this.searchResultEl_.empty();
-  this.searchInputEl_ = $('#search_autocomplete');
-  this.searchInputEl_.focus().val(this.query);
-  this.getResults_();
-  this.bindEvents_();
-};
+  // configure search result options
+  searchOptions = new google.search.SearcherOptions();
+  searchOptions.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
 
+  // configure each of the searchers, for each tab
+  devSiteSearcher = new google.search.WebSearch();
+  devSiteSearcher.setUserDefinedLabel("All");
+  devSiteSearcher.setSiteRestriction("001482626316274216503:zu90b7s047u");
 
-/**
- * Binds the keyup event to the search input.
- * @private
- */
-dacsearch.CustomSearchEngine.prototype.bindEvents_ = function() {
-  this.searchInputEl_.keyup(this.debounce_(function(e) {
-    var code = e.which;
-    if (code != 13) {
-      this.query = this.searchInputEl_.val();
-      location.hash = 'q=' + encodeURI(this.query);
-      this.searchResultEl_.empty();
-      this.getResults_();
-    }
-  }.bind(this), 250));
-};
+  designSearcher = new google.search.WebSearch();
+  designSearcher.setUserDefinedLabel("Design");
+  designSearcher.setSiteRestriction("http://developer.android.com/design/");
 
+  trainingSearcher = new google.search.WebSearch();
+  trainingSearcher.setUserDefinedLabel("Training");
+  trainingSearcher.setSiteRestriction("http://developer.android.com/training/");
 
-/**
- * Resets the search control.
- */
-dacsearch.CustomSearchEngine.prototype.reset = function() {
-  this.query = '';
-  this.searchInputEl_.off('keyup');
-  this.searchResultEl_.empty();
-  this.updateResultTitle_();
-};
+  guidesSearcher = new google.search.WebSearch();
+  guidesSearcher.setUserDefinedLabel("Guides");
+  guidesSearcher.setSiteRestriction("http://developer.android.com/guide/");
 
+  referenceSearcher = new google.search.WebSearch();
+  referenceSearcher.setUserDefinedLabel("Reference");
+  referenceSearcher.setSiteRestriction("http://developer.android.com/reference/");
 
-/**
- * Updates the search query text at the top of the results.
- * @private
- */
-dacsearch.CustomSearchEngine.prototype.updateResultTitle_ = function() {
-  $("#searchTitle").html("Results for <em>" + this.query + "</em>");
-};
+  googleSearcher = new google.search.WebSearch();
+  googleSearcher.setUserDefinedLabel("Google Services");
+  googleSearcher.setSiteRestriction("http://developer.android.com/google/");
 
+  blogSearcher = new google.search.WebSearch();
+  blogSearcher.setUserDefinedLabel("Blog");
+  blogSearcher.setSiteRestriction("http://android-developers.blogspot.com");
 
-/**
- * Makes the CSE api call and gets the results.
- * @param {number=} opt_start The optional start index.
- * @private
- */
-dacsearch.CustomSearchEngine.prototype.getResults_ = function(opt_start) {
-  var lang = getLangPref();
-  // Fix zh-cn to be zh-CN.
-  lang = lang.replace(/-\w+/, function(m) { return m.toUpperCase(); });
-  var cseUrl = 'https://content.googleapis.com/customsearch/v1?';
-  var searchParams = {
-    cx: '000521750095050289010:zpcpi1ea4s8',
-    key: 'AIzaSyCFhbGnjW06dYwvRCU8h_zjdpS4PYYbEe8',
-    q: this.query,
-    start: opt_start || 1,
-    num: 6,
-    hl: lang,
-    fields: 'queries,items(pagemap,link,title,htmlSnippet,formattedUrl)'
-  };
+  // add each searcher to the search control
+  searchControl.addSearcher(devSiteSearcher, searchOptions);
+  searchControl.addSearcher(designSearcher, searchOptions);
+  searchControl.addSearcher(trainingSearcher, searchOptions);
+  searchControl.addSearcher(guidesSearcher, searchOptions);
+  searchControl.addSearcher(referenceSearcher, searchOptions);
+  searchControl.addSearcher(googleSearcher, searchOptions);
+  searchControl.addSearcher(blogSearcher, searchOptions);
 
-  $.get(cseUrl + $.param(searchParams), function(data) {
-    this.resultQuery_ = data;
-    this.renderResults_(data);
-    this.updateResultTitle_(this.query);
-  }.bind(this));
-};
+  // configure result options
+  searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);
+  searchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF);
+  searchControl.setTimeoutInterval(google.search.SearchControl.TIMEOUT_SHORT);
+  searchControl.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);
 
+  // upon ajax search, refresh the url and search title
+  searchControl.setSearchStartingCallback(this, function(control, searcher, query) {
+    updateResultTitle(query);
+    var query = document.getElementById('search_autocomplete').value;
+    location.hash = 'q=' + query;
+  });
 
-/**
- * Renders the results.
- * @private
- */
-dacsearch.CustomSearchEngine.prototype.renderResults_ = function(results) {
-  var el = this.searchResultEl_;
+  // once search results load, set up click listeners
+  searchControl.setSearchCompleteCallback(this, function(control, searcher, query) {
+    addResultClickListeners();
+  });
 
-  if (!results.items) {
-    el.append($('<div>').text('No results'));
-    return;
-  }
+  // draw the search results box
+  searchControl.draw(document.getElementById("leftSearchControl"), drawOptions);
 
-  for (var i = 0; i < results.items.length; i++) {
-    var item = results.items[i];
-    var hasImage = item.pagemap && item.pagemap.cse_thumbnail;
-    var sectionMatch = item.link.match(/developer\.android\.com\/(\w*)/);
-    var section = (sectionMatch && sectionMatch[1]) || 'blog';
+  // get query and execute the search
+  searchControl.execute(decodeURI(getQuery(location.hash)));
 
-    var entry = $('<div>').addClass('dac-custom-search-entry cols');
-
-    if (hasImage) {
-      var image = item.pagemap.cse_thumbnail[0];
-      entry.append($('<div>').addClass('col-1of6')
-        .append($('<div>').addClass('dac-custom-search-image').css(
-        'background-image', 'url(' + image.src + ')')));
-    }
-
-    var linkTitleEl = $('<a>').text(item.title).attr('href', item.link);
-    linkTitleEl.click(function(e) {
-      ga('send', 'event', 'Google Custom Search',
-          'clicked: ' + linkTitleEl.attr('href'),
-          'query: ' + $("#search_autocomplete").val().toLowerCase());
-    });
-
-    var linkUrlEl = $('<a>').addClass('dac-custom-search-link').text(
-        item.formattedUrl).attr('href', item.link);
-    linkUrlEl.click(function(e) {
-      ga('send', 'event', 'Google Custom Search',
-          'clicked: ' + linkUrlEl.attr('href'),
-          'query: ' + $("#search_autocomplete").val().toLowerCase());
-    });
-
-
-    entry.append($('<div>').addClass(hasImage ? 'col-5of6' : 'col-6of6')
-      .append($('<p>').addClass('dac-custom-search-section').text(section))
-      .append(
-        linkTitleEl.wrap('<h2>').parent().addClass('dac-custom-search-title'))
-      .append($('<p>').addClass('dac-custom-search-snippet')
-      .html(item.htmlSnippet.replace(/<br>/g, ''))).append(linkUrlEl));
-
-    el.append(entry);
-  }
-
-  if ($('#dac-custom-search-load-more')) {
-    $('#dac-custom-search-load-more').remove();
-  }
-
-  if (results.queries.nextPage) {
-    var loadMoreButton = $('<button id="dac-custom-search-load-more">')
-      .addClass('dac-custom-search-load-more')
-      .text('Load more')
-      .click(function() {
-        this.loadMoreResults_();
-      }.bind(this));
-
-    el.append(loadMoreButton);
-  }
-};
-
-
-/**
- * Loads more results.
- * @private
- */
-dacsearch.CustomSearchEngine.prototype.loadMoreResults_ = function() {
-  this.query = this.resultQuery_.queries.request[0].searchTerms;
-  var start = this.resultQuery_.queries.nextPage[0].startIndex;
-  var loadMoreButton = this.searchResultEl_.find(
-      '#dac-custom-search-load-more');
-  loadMoreButton.text('Loading more...');
-  this.getResults_(start);
-  this.trackSearchRequest(this.query + ' startIndex = ' + start);
-};
-
-
-/**
- * Tracks a search request.
- * @param {string} query The query for the request,
- *                       includes start index if loading more results.
- */
-dacsearch.CustomSearchEngine.prototype.trackSearchRequest = function(query) {
-  ga('send', 'event', 'Google Custom Search Submit', 'submit search query',
-      'query: ' + query);
-};
-
-
-/**
- * Returns a function, that, as long as it continues to be invoked, will not
- * be triggered. The function will be called after it stops being called for
- * N milliseconds.
- * @param {Function} func The function to debounce.
- * @param {number} wait The number of milliseconds to wait before calling the function.
- * @private
- */
-dacsearch.CustomSearchEngine.prototype.debounce_ = function(func, wait) {
-  var timeout;
-  return function() {
-    var context = this, args = arguments;
-    var later = function() {
-      timeout = null;
-      func.apply(context, args);
-    };
-   clearTimeout(timeout);
-   timeout = setTimeout(later, wait);
-  };
-};
+  document.getElementById("search_autocomplete").focus();
+  addTabListeners();
+}
+// End of loadSearchResults
 
 
 google.setOnLoadCallback(function(){
-  searchControl = new dacsearch.CustomSearchEngine();
   if (location.hash.indexOf("q=") == -1) {
     // if there's no query in the url, don't search and make sure results are hidden
     $('#searchResults').hide();
     return;
   } else {
     // first time loading search results for this page
-    searchControl.query = decodeURI(location.hash.split('q=')[1]);
-    searchControl.init();
-    searchControl.trackSearchRequest(searchControl.query);
     $('#searchResults').slideDown('slow', setStickyTop);
     $("#search-close").removeClass("hide");
+    loadSearchResults();
   }
 }, true);
 
@@ -2833,7 +2703,7 @@
 
   // If the hash isn't a search query or there's an error in the query,
   // then adjust the scroll position to account for sticky header, then exit.
-  if ((location.hash.indexOf("q=") == -1) || (searchControl.query == "undefined")) {
+  if ((location.hash.indexOf("q=") == -1) || (query == "undefined")) {
     // If the results pane is open, close it.
     if (!$("#searchResults").is(":hidden")) {
       hideResults();
@@ -2842,11 +2712,65 @@
     return;
   }
 
+  // Otherwise, we have a search to do
+  var query = decodeURI(getQuery(location.hash));
+  searchControl.execute(query);
   $('#searchResults').slideDown('slow', setStickyTop);
   $("#search_autocomplete").focus();
   $("#search-close").removeClass("hide");
+
+  updateResultTitle(query);
 });
 
+function updateResultTitle(query) {
+  $("#searchTitle").html("Results for <em>" + escapeHTML(query) + "</em>");
+}
+
+// forcefully regain key-up event control (previously jacked by search api)
+$("#search_autocomplete").keyup(function(event) {
+  return search_changed(event, false, toRoot);
+});
+
+// add event listeners to each tab so we can track the browser history
+function addTabListeners() {
+  var tabHeaders = $(".gsc-tabHeader");
+  for (var i = 0; i < tabHeaders.length; i++) {
+    $(tabHeaders[i]).attr("id",i).click(function() {
+    /*
+      // make a copy of the page numbers for the search left pane
+      setTimeout(function() {
+        // remove any residual page numbers
+        $('#searchResults .gsc-tabsArea .gsc-cursor-box.gs-bidi-start-align').remove();
+        // move the page numbers to the left position; make a clone,
+        // because the element is drawn to the DOM only once
+        // and because we're going to remove it (previous line),
+        // we need it to be available to move again as the user navigates
+        $('#searchResults .gsc-webResult .gsc-cursor-box.gs-bidi-start-align:visible')
+                        .clone().appendTo('#searchResults .gsc-tabsArea');
+        }, 200);
+      */
+    });
+  }
+  setTimeout(function(){$(tabHeaders[0]).click()},200);
+}
+
+// add analytics tracking events to each result link
+function addResultClickListeners() {
+  $("#searchResults a.gs-title").each(function(index, link) {
+    // When user clicks enter for Google search results, track it
+    $(link).click(function() {
+      ga('send', 'event', 'Google Click', 'clicked: ' + $(this).attr('href'),
+                'query: ' + $("#search_autocomplete").val().toLowerCase());
+    });
+  });
+}
+
+
+function getQuery(hash) {
+  var queryParts = hash.split('=');
+  return queryParts[1];
+}
+
 /* returns the given string with all HTML brackets converted to entities
     TODO: move this to the site's JS library */
 function escapeHTML(string) {
@@ -3447,13 +3371,13 @@
     if ( (expand == null && a.hasClass("closed")) || expand ) {
         list.style.display = "none";
         summary.style.display = "block";
-        trigger.src = toRoot + "assets/images/styles/disclosure_up.png";
+        trigger.src = toRoot + "assets/images/triangle-opened.png";
         a.removeClass("closed");
         a.addClass("opened");
     } else if ( (expand == null && a.hasClass("opened")) || (expand == false) ) {
         list.style.display = "block";
         summary.style.display = "none";
-        trigger.src = toRoot + "assets/images/styles/disclosure_down.png";
+        trigger.src = toRoot + "assets/images/triangle-closed.png";
         a.removeClass("opened");
         a.addClass("closed");
     }
@@ -3823,7 +3747,7 @@
 
     return $el;
   }
-
+  
   function createResponsiveFlowColumn(cardSize) {
     var cardWidth = parseInt(cardSize.match(/(\d+)/)[1], 10);
     var column = $('<div>').addClass('col-' + (cardWidth / 3) + 'of6');
@@ -3864,7 +3788,7 @@
 
       var cardSize = cardSizes[j++ % cardSizes.length];
       cardSize = cardSize.replace(/^\s+|\s+$/,'');
-
+      
       var column = createResponsiveFlowColumn(cardSize).appendTo(cardParent);
 
       // A stack has a third dimension which is the number of stacked items
@@ -4944,11 +4868,6 @@
     this.el.removeClass('dac-active');
     $('body').removeClass('dac-modal-open');
     this.isOpen = false;
-    // When closing the modal for Android Studio downloads, reload the page
-    // because otherwise we might get stuck with post-download dialog state
-    if ($("[data-modal='studio_tos']").length) {
-      location.reload();
-    }
   };
 
   Modal.prototype.open_ = function() {
diff --git a/tools/droiddoc/templates-sdk/components/masthead.cs b/tools/droiddoc/templates-sdk/components/masthead.cs
index e17612d..cc00baa 100644
--- a/tools/droiddoc/templates-sdk/components/masthead.cs
+++ b/tools/droiddoc/templates-sdk/components/masthead.cs
@@ -252,7 +252,8 @@
           <?cs if:android.hasSamples ?>
           <li class="dac-nav-item samples">
             <a class="dac-nav-link" href="<?cs var:toroot ?>samples/index.html">Samples</a>
-          </li><?cs /if ?>
+          </li>
+          <?cs /if ?>
           <li class="dac-nav-item preview">
             <a class="dac-nav-link" href="<?cs var:toroot ?>preview/index.html">Preview</a>
           </li>
diff --git a/tools/droiddoc/templates-sdk/customizations.cs b/tools/droiddoc/templates-sdk/customizations.cs
index 4cf5abb..d52f0e4 100644
--- a/tools/droiddoc/templates-sdk/customizations.cs
+++ b/tools/droiddoc/templates-sdk/customizations.cs
@@ -10,7 +10,7 @@
   <div id="body-content">
     <div>
 <?cs /def ?>
-<?cs
+<?cs 
 def:sdk_nav() ?>
   <div class="wrap clearfix" id="body-content"><div class="cols">
     <div class="col-4 dac-toggle dac-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
@@ -297,7 +297,7 @@
       </div>
       <script type="text/javascript">
        showGoogleRefTree();
-
+    
       </script>
     </div> <!-- end side-nav -->
     <script>
@@ -528,7 +528,7 @@
       call:fullpage() ?><?cs
     elif:nonavpage ?><?cs
       call:no_nav() ?><?cs
-    elif:guide || reference || samples || downloads ?><?cs
+    elif:guide || reference || samples || downloads ?><?cs      
       call:ndk_nav() ?><?cs
     else ?><?cs
       call:default_left_nav() ?> <?cs
diff --git a/tools/droiddoc/templates-sdk/designpage.cs b/tools/droiddoc/templates-sdk/designpage.cs
index d9c2681..4a523ce 100644
--- a/tools/droiddoc/templates-sdk/designpage.cs
+++ b/tools/droiddoc/templates-sdk/designpage.cs
@@ -9,10 +9,10 @@
     <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
     <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic">
     <link rel="stylesheet" href="<?cs var:toroot ?>assets/yui-3.3.0-reset-min.css">
-    <link rel="stylesheet" href="<?cs var:toroot ?>assets/design/default.css?v=19">
+    <link rel="stylesheet" href="<?cs var:toroot ?>assets/design/default.css">
     <script src="<?cs var:toroot ?>assets/jquery-1.6.2.min.js"></script>
     <script>var SITE_ROOT = '<?cs var:toroot ?>design';</script>
-    <script src="<?cs var:toroot ?>assets/design/default.js?v=19"></script>
+    <script src="<?cs var:toroot ?>assets/design/default.js"></script>
   </head>
   <body class="gc-documentation 
     <?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs
diff --git a/tools/droiddoc/templates-sdk/docpage.cs b/tools/droiddoc/templates-sdk/docpage.cs
index d41adaa..668105b 100644
--- a/tools/droiddoc/templates-sdk/docpage.cs
+++ b/tools/droiddoc/templates-sdk/docpage.cs
@@ -193,11 +193,11 @@
 </div><!-- end doc-content -->
 
 <?cs include:"trailer.cs" ?>
-  <script src="https://developer.android.com/ytblogger_lists_unified.js?v=19" type="text/javascript"></script>
-  <script src="<?cs var:toroot ?>jd_lists_unified.js?v=19" type="text/javascript"></script>
-  <script src="<?cs var:toroot ?>jd_extras.js?v=19" type="text/javascript"></script>
-  <script src="<?cs var:toroot ?>jd_collections.js?v=19" type="text/javascript"></script>
-  <script src="<?cs var:toroot ?>jd_tag_helpers.js?v=19" type="text/javascript"></script>
+  <script src="https://developer.android.com/ytblogger_lists_unified.js" type="text/javascript"></script>
+  <script src="<?cs var:toroot ?>jd_lists_unified.js?v=15" type="text/javascript"></script>
+  <script src="<?cs var:toroot ?>jd_extras.js?v=15" type="text/javascript"></script>
+  <script src="<?cs var:toroot ?>jd_collections.js?v=15" type="text/javascript"></script>
+  <script src="<?cs var:toroot ?>jd_tag_helpers.js?v=15" type="text/javascript"></script>
 
 </body>
 </html>
diff --git a/tools/droiddoc/templates-sdk/footer.cs b/tools/droiddoc/templates-sdk/footer.cs
index 095c7fd..a0900f2 100644
--- a/tools/droiddoc/templates-sdk/footer.cs
+++ b/tools/droiddoc/templates-sdk/footer.cs
@@ -44,12 +44,10 @@
         <select name="language" onchange="changeLangPref(this.value, true)">
           <option value="en" selected="selected">English</option>
           <option value="es">Español</option>
-          <option value="in">Bahasa Indonesia</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
           <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
-          <option value="vi">tiếng Việt</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
         </select>
diff --git a/tools/droiddoc/templates-sdk/head_tag.cs b/tools/droiddoc/templates-sdk/head_tag.cs
index 1dbb3c3..c668203 100644
--- a/tools/droiddoc/templates-sdk/head_tag.cs
+++ b/tools/droiddoc/templates-sdk/head_tag.cs
@@ -22,17 +22,6 @@
 <meta name="Description" content="<?cs var:page.metaDescription ?>"><?cs
   /if ?>
 <link rel="shortcut icon" type="image/x-icon" href="<?cs var:toroot ?>favicon.ico" />
-<link rel="alternate" href="http://developer.android.com/<?cs var:path.canonical ?>" hreflang="en" />
-<link rel="alternate" href="http://developer.android.com/intl/es/<?cs var:path.canonical ?>" hreflang="es" />
-<link rel="alternate" href="http://developer.android.com/intl/id/<?cs var:path.canonical ?>" hreflang="id" />
-<link rel="alternate" href="http://developer.android.com/intl/ja/<?cs var:path.canonical ?>" hreflang="ja" />
-<link rel="alternate" href="http://developer.android.com/intl/ko/<?cs var:path.canonical ?>" hreflang="ko" />
-<link rel="alternate" href="http://developer.android.com/intl/pt-br/<?cs var:path.canonical ?>" hreflang="pt-br" />
-<link rel="alternate" href="http://developer.android.com/intl/ru/<?cs var:path.canonical ?>" hreflang="ru" />
-<link rel="alternate" href="http://developer.android.com/intl/vi/<?cs var:path.canonical ?>" hreflang="vi" />
-<link rel="alternate" href="http://developer.android.com/intl/zh-cn/<?cs var:path.canonical ?>" hreflang="zh-cn" />
-<link rel="alternate" href="http://developer.android.com/intl/zh-tw/<?cs var:path.canonical ?>" hreflang="zh-tw" />
-
 <title><?cs
   if:page.title ?><?cs
     var:page.title ?> | <?cs
@@ -47,12 +36,12 @@
 if:android.whichdoc != 'online' ?>https:<?cs
 /if ?>//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
   title="roboto">
-<?cs
+<?cs 
   if:ndk ?><link rel="stylesheet" href="<?cs
   if:android.whichdoc != 'online' ?>https:<?cs
   /if ?>//fonts.googleapis.com/css?family=Roboto+Mono:400,500,700" title="roboto-mono" type="text/css"><?cs
 /if ?>
-<link href="<?cs var:toroot ?>assets/css/default.css?v=19" rel="stylesheet" type="text/css">
+<link href="<?cs var:toroot ?>assets/css/default.css?v=7" rel="stylesheet" type="text/css">
 
 <?cs if:reference && !(reference.gms || reference.gcm || preview) ?>
 <!-- FULLSCREEN STYLESHEET -->
@@ -75,9 +64,8 @@
   var toRoot = "<?cs var:toroot ?>";
   var metaTags = [<?cs var:meta.tags ?>];
   var devsite = <?cs if:devsite ?>true<?cs else ?>false<?cs /if ?>;
-  var useUpdatedTemplates = <?cs if:useUpdatedTemplates ?>true<?cs else ?>false<?cs /if ?>;
 </script>
-<script src="<?cs var:toroot ?>assets/js/docs.js?v=19" type="text/javascript"></script>
+<script src="<?cs var:toroot ?>assets/js/docs.js?v=6" type="text/javascript"></script>
 
 <?cs if:helpoutsWidget ?>
 <script type="text/javascript" src="https://helpouts.google.com/ps/res/embed.js" defer async
diff --git a/tools/droiddoc/templates-sdk/sdkpage.cs b/tools/droiddoc/templates-sdk/sdkpage.cs
index d4b0af2..401f183 100644
--- a/tools/droiddoc/templates-sdk/sdkpage.cs
+++ b/tools/droiddoc/templates-sdk/sdkpage.cs
@@ -1,6 +1,5 @@
 <?cs include:"doctype.cs" ?>
 <?cs include:"macros.cs" ?>
-<?cs include:"../../../../frameworks/base/docs/html/sdk/sdk_vars.cs" ?>
 <html<?cs if:devsite ?> devsite<?cs /if ?>>
 <?cs if:sdk.redirect ?>
   <head>
@@ -81,20 +80,20 @@
       <th>Platform</th>
       <th>Package</th>
       <th style="white-space:nowrap">Size (Bytes)</th>
-      <th>SHA1 Checksum</th>
+      <th>MD5 Checksum</th>
   </tr>
   <tr>
     <td>Windows 32-bit</td>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.win32_download ?>"><?cs var:ndk.win32_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.win32_download ?>"><?cs var:ndk.win32_download ?></a>
     </td>
     <td><?cs var:ndk.win32_bytes ?></td>
     <td><?cs var:ndk.win32_checksum ?></td>
   </tr>
  <!-- <tr>
    <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
+  <a onClick="return onDownload(this)"
      href="//dl.google.com/android/ndk/<?cs var:ndk.win32.legacy_download ?>"><?cs var:ndk.win32.legacy_download ?></a>
     </td>
     <td><?cs var:ndk.win32.legacy_bytes ?></td>
@@ -103,16 +102,16 @@
   <tr>
     <td>Windows 64-bit</td>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.win64_download ?>"><?cs var:ndk.win64_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.win64_download ?>"><?cs var:ndk.win64_download ?></a>
     </td>
     <td><?cs var:ndk.win64_bytes ?></td>
     <td><?cs var:ndk.win64_checksum ?></td>
   </tr>
  <!--  <tr>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.win64.legacy_download ?>"><?cs var:ndk.win64.legacy_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.win64.legacy_download ?>"><?cs var:ndk.win64.legacy_download ?></a>
     </td>
     <td><?cs var:ndk.win64.legacy_bytes ?></td>
     <td><?cs var:ndk.win64.legacy_checksum ?></td>
@@ -121,8 +120,8 @@
   <tr>
     <td>Mac OS X 32-bit</td>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.mac32_download ?>"><?cs var:ndk.mac32_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.mac32_download ?>"><?cs var:ndk.mac32_download ?></a>
     </td>
     <td><?cs var:ndk.mac32_bytes ?></td>
     <td><?cs var:ndk.mac32_checksum ?></td>
@@ -130,32 +129,41 @@
  <!-- (this item is deprecated)
   <tr>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.mac32.legacy_download ?>"><?cs var:ndk.mac32.legacy_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.mac32.legacy_download ?>"><?cs var:ndk.mac32.legacy_download ?></a>
     </td>
     <td><?cs var:ndk.mac32.legacy_bytes ?></td>
     <td><?cs var:ndk.mac32.legacy_checksum ?></td>
   </tr> -->
     <td>Mac OS X 64-bit</td>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.mac64_download ?>"><?cs var:ndk.mac64_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.mac64_download ?>"><?cs var:ndk.mac64_download ?></a>
     </td>
     <td><?cs var:ndk.mac64_bytes ?></td>
     <td><?cs var:ndk.mac64_checksum ?></td>
   </tr>
  <!--  <tr>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.mac64.legacy_download ?>"><?cs var:ndk.mac64.legacy_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.mac64.legacy_download ?>"><?cs var:ndk.mac64.legacy_download ?></a>
     </td>
     <td><?cs var:ndk.mac64.legacy_bytes ?></td>
     <td><?cs var:ndk.mac64.legacy_checksum ?></td>
   </tr> -->
+  <tr>
+    <td>Linux 32-bit (x86)</td>
+    <td>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.linux32_download ?>"><?cs var:ndk.linux32_download ?></a>
+    </td>
+    <td><?cs var:ndk.linux32_bytes ?></td>
+    <td><?cs var:ndk.linux32_checksum ?></td>
+  </tr>
  <!--  <tr>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.linux32.legacy_download ?>"><?cs var:ndk.linux32.legacy_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.linux32.legacy_download ?>"><?cs var:ndk.linux32.legacy_download ?></a>
     </td>
     <td><?cs var:ndk.linux32.legacy_bytes ?></td>
     <td><?cs var:ndk.linux32.legacy_checksum ?></td>
@@ -163,16 +171,16 @@
   <tr>
     <td>Linux 64-bit (x86)</td>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.linux64_download ?>"><?cs var:ndk.linux64_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.linux64_download ?>"><?cs var:ndk.linux64_download ?></a>
     </td>
     <td><?cs var:ndk.linux64_bytes ?></td>
     <td><?cs var:ndk.linux64_checksum ?></td>
   </tr>
   <!--  <tr>
     <td>
-  <a onClick="return onDownload(this)" data-modal-toggle="ndk_tos"
-     href="//dl.google.com/android/repository/<?cs var:ndk.linux64.legacy_download ?>"><?cs var:ndk.linux64.legacy_download ?></a>
+  <a onClick="return onDownload(this)"
+     href="//dl.google.com/android/ndk/<?cs var:ndk.linux64.legacy_download ?>"><?cs var:ndk.linux64.legacy_download ?></a>
     </td>
     <td><?cs var:ndk.linux64.legacy_bytes ?></td>
     <td><?cs var:ndk.linux64.legacy_checksum ?></td>
@@ -184,13 +192,16 @@
   <?cs call:tag_list(root.descr) ?>
 
 
-<?cs ########  The NDK version of the download script ######### ?>
+
 <script>
   function onDownload(link) {
 
     $("#downloadForRealz").html("Download " + $(link).text());
     $("#downloadForRealz").attr('href',$(link).attr('href'));
 
+    $("#tos").fadeIn('slow');
+
+    location.hash = "download";
     return false;
   }
 
@@ -203,28 +214,25 @@
     }
   }
 
-
-  function onDownloadForRealz(link) {
+  function onDownloadNdkForRealz(link) {
     if ($("input#agree").is(':checked')) {
-      $("div.sdk-terms").slideUp();
-      $("h2#tos-header").text('Now downloading...');
-      $(".sdk-terms-intro").text('Your download is in progress.');
-      $("#sdk-terms-form").fadeOut('slow', function() {
-        setTimeout(function() {
-          // close the dialog
-          $('#ndk_tos').trigger('modal-close');
-          // reload to refresh the tos or optionally forward the user
-           location.reload();
-        }, 3000);
+      $("#tos").fadeOut('slow');
+
+      $('html, body').animate({
+          scrollTop: $("#Installing").offset().top
+        }, 800, function() {
+          $("#Installing").click();
       });
-      ga('send', 'event', 'SDK', 'NDK tools', $("#downloadForRealz").html());
+
       return true;
     } else {
+      $("label#agreeLabel").parent().stop().animate({color: "#258AAF"}, 200,
+        function() {$("label#agreeLabel").parent().stop().animate({color: "#222"}, 200)}
+      );
       return false;
     }
   }
 
-
   $(window).hashchange( function(){
     if (location.hash == "") {
       location.reload();
@@ -256,173 +264,153 @@
 <?cs call:tag_list(root.descr) ?>
 
 
-<section id="downloads" class="dac-section dac-small">
-<div class="wrap">
-
-<h2 class="norule">Start using Android Studio today</h2>
-
-<p>Android Studio includes all the tools you need to build apps for Android.</p>
-
-<div style="float:left;margin-right:40px;width:auto;">
-<p>
-  <a class="landing-button green download-bundle-button"
-    data-modal-toggle="studio_tos">Download Android Studio 2.0<br>
-  <span class="small"></span></a>
-</p>
-</div>
-
-<div style="float:left;width:auto;margin-bottom:40px">
-<ul class="nolist" style="text-transform: uppercase;margin:8px 0">
-<li>Version: <?cs var:studio.version ?></li>
-<li>Release date: <?cs var:studio.release.date ?></li>
-</ul>
-</div>
 
 
+<div class="pax col-13 online" style="margin:0;">
 
-<h4 style="clear:left;margin-top:40px">Select a different platform</h4>
+
+<h3>SDK Tools Only</h3>
+
+<p>If you prefer to use a different IDE or run the tools from the
+command line or with build scripts, you can instead download the stand-alone Android SDK Tools.
+These packages provide the basic SDK tools for app development, without an IDE.
+Also see the <a href="<?cs var:toroot ?>tools/sdk/tools-notes.html">SDK tools release notes</a>.</p>
 
   <table class="download">
     <tr>
       <th>Platform</th>
-      <th>Android Studio package</th>
+      <th>Package</th>
       <th>Size</th>
-      <th>SHA-1 checksum</th>
+      <th>SHA-1 Checksum</th>
   </tr>
   <tr>
-    <td rowspan="3">Windows</td>
+    <td rowspan="2">Windows</td>
     <td>
-  <a onclick="return onDownload(this,false,true)" id="win-bundle" data-modal-toggle="studio_tos"
-    href="//dl.google.com/dl/android/studio/install/<?cs var:studio.version ?>/<?cs var:studio.win_bundle_exe_download ?>"
-    ><?cs var:studio.win_bundle_exe_download ?></a><br>
-    Includes Windows installer (recommended)
+  <a onclick="return onDownload(this)" id="win-tools" href="//dl.google.com/android/<?cs
+var:sdk.win_installer
+?>"><?cs var:sdk.win_installer ?></a> (Recommended)
     </td>
-    <td id="win-bundle-size"><?cs call:size_in_mb(studio.win_bundle_exe_bytes) ?> MB
-      <br>(<?cs var:studio.win_bundle_exe_bytes ?> bytes)</td>
-    <td><?cs var:studio.win_bundle_exe_checksum ?></td>
+    <td><?cs var:sdk.win_installer_bytes ?> bytes</td>
+    <td><?cs var:sdk.win_installer_checksum ?></td>
   </tr>
   <tr>
     <!-- blank TD from Windows rowspan -->
     <td>
-  <a onclick="return onDownload(this,false,true)" id="win-bundle-zip" data-modal-toggle="studio_tos"
-    href="//dl.google.com/dl/android/studio/ide-zips/<?cs var:studio.version ?>/<?cs var:studio.win_bundle_download ?>"
-    ><?cs var:studio.win_bundle_download ?></a><br>
-    No Windows installer
+  <a onclick="return onDownload(this)" href="//dl.google.com/android/<?cs var:sdk.win_download
+?>"><?cs var:sdk.win_download ?></a>
     </td>
-    <td><?cs call:size_in_mb(studio.win_bundle_bytes) ?> MB
-      <br>(<?cs var:studio.win_bundle_bytes ?> bytes)</td>
-    <td><?cs var:studio.win_bundle_checksum ?></td>
-  </tr>
-  <tr>
-    <!-- blank TD from Windows rowspan -->
-    <td>
-  <a onclick="return onDownload(this,false,true)" id="win-bundle-notools" data-modal-toggle="studio_tos"
-    href="https://dl.google.com/dl/android/studio/install/<?cs var:studio.version ?>/<?cs var:studio.win_notools_exe_download ?>"
-    ><?cs var:studio.win_notools_exe_download ?></a><br>
-    Includes Windows installer but no SDK tools
-    </td>
-    <td><?cs call:size_in_mb(studio.win_notools_exe_bytes) ?> MB
-      <br>(<?cs var:studio.win_notools_exe_bytes ?> bytes)</td>
-    <td><?cs var:studio.win_notools_exe_checksum ?></td>
+    <td><?cs var:sdk.win_bytes ?> bytes</td>
+    <td><?cs var:sdk.win_checksum ?></td>
   </tr>
   <tr>
     <td><nobr>Mac OS X</nobr></td>
     <td>
-  <a onclick="return onDownload(this,false,true)" id="mac-bundle" data-modal-toggle="studio_tos"
-    href="//dl.google.com/dl/android/studio/install/<?cs var:studio.version ?>/<?cs var:studio.mac_bundle_download ?>"
-    ><?cs var:studio.mac_bundle_download ?></a>
+  <a onclick="return onDownload(this)" id="mac-tools" href="//dl.google.com/android/<?cs
+var:sdk.mac_download
+?>"><?cs var:sdk.mac_download ?></a>
     </td>
-    <td id="mac-bundle-size"><?cs call:size_in_mb(studio.mac_bundle_bytes) ?> MB
-      <br>(<?cs var:studio.mac_bundle_bytes ?> bytes)</td>
-    <td><?cs var:studio.mac_bundle_checksum ?></td>
+    <td><?cs var:sdk.mac_bytes ?> bytes</td>
+    <td><?cs var:sdk.mac_checksum ?></td>
   </tr>
   <tr>
     <td>Linux</td>
     <td>
-  <a onclick="return onDownload(this,false,true)" id="linux-bundle" data-modal-toggle="studio_tos"
-    href="//dl.google.com/dl/android/studio/ide-zips/<?cs var:studio.version ?>/<?cs var:studio.linux_bundle_download ?>"
+  <a onclick="return onDownload(this)" id="linux-tools" href="//dl.google.com/android/<?cs
+var:sdk.linux_download
+?>"><?cs var:sdk.linux_download ?></a>
+    </td>
+    <td><?cs var:sdk.linux_bytes ?> bytes</td>
+    <td><?cs var:sdk.linux_checksum ?></td>
+  </tr>
+  </table>
+
+
+
+<h3>All Android Studio Packages</h3>
+
+<p>Select a specific Android Studio package for your platform. Also see the
+<a href="<?cs var:toroot ?>tools/revisions/studio.html">Android Studio release notes</a>.</p>
+
+  <table class="download">
+    <tr>
+      <th>Platform</th>
+      <th>Package</th>
+      <th>Size</th>
+      <th>SHA-1 Checksum</th>
+  </tr>
+
+  <tr>
+    <td rowspan="3">Windows</td>
+    <td>
+  <a onclick="return onDownload(this,false,true)" id="win-bundle"
+    href="https://dl.google.com/dl/android/studio/install/<?cs var:studio.version ?>/<?cs var:studio.win_bundle_exe_download ?>"
+    ><?cs var:studio.win_bundle_exe_download ?></a><br>(Recommended)
+    </td>
+    <td><?cs var:studio.win_bundle_exe_bytes ?> bytes</td>
+    <td><?cs var:studio.win_bundle_exe_checksum ?></td>
+  </tr>
+
+  <tr>
+    <!-- blank TD from Windows rowspan -->
+    <td>
+  <a onclick="return onDownload(this,false,true)" id="win-bundle-notools"
+    href="https://dl.google.com/dl/android/studio/install/<?cs var:studio.version ?>/<?cs var:studio.win_notools_exe_download ?>"
+    ><?cs var:studio.win_notools_exe_download ?></a><br>(No SDK tools included)
+    </td>
+    <td><?cs var:studio.win_notools_exe_bytes ?> bytes</td>
+    <td><?cs var:studio.win_notools_exe_checksum ?></td>
+  </tr>
+
+  <tr>
+    <!-- blank TD from Windows rowspan -->
+    <td>
+  <a onclick="return onDownload(this,false,true)" id="win-bundle-zip"
+    href="https://dl.google.com/dl/android/studio/ide-zips/<?cs var:studio.version ?>/<?cs var:studio.win_bundle_download ?>"
+    ><?cs var:studio.win_bundle_download ?></a>
+    </td>
+    <td><?cs var:studio.win_bundle_bytes ?> bytes</td>
+    <td><?cs var:studio.win_bundle_checksum ?></td>
+  </tr>
+
+  <tr>
+    <td><nobr>Mac OS X</nobr></td>
+    <td>
+  <a onclick="return onDownload(this,false,true)" id="mac-bundle"
+    href="https://dl.google.com/dl/android/studio/install/<?cs var:studio.version ?>/<?cs var:studio.mac_bundle_download ?>"
+    ><?cs var:studio.mac_bundle_download ?></a>
+    </td>
+    <td><?cs var:studio.mac_bundle_bytes ?> bytes</td>
+    <td><?cs var:studio.mac_bundle_checksum ?></td>
+  </tr>
+
+  <tr>
+    <td>Linux</td>
+    <td>
+  <a onclick="return onDownload(this,false,true)" id="linux-bundle"
+    href="https://dl.google.com/dl/android/studio/ide-zips/<?cs var:studio.version ?>/<?cs var:studio.linux_bundle_download ?>"
     ><?cs var:studio.linux_bundle_download ?></a>
     </td>
-    <td id="linux-bundle-size"><?cs call:size_in_mb(studio.linux_bundle_bytes) ?> MB
-      <br>(<?cs var:studio.linux_bundle_bytes ?> bytes)</td>
+    <td><?cs var:studio.linux_bundle_bytes ?> bytes</td>
     <td><?cs var:studio.linux_bundle_checksum ?></td>
   </tr>
   </table>
 
 
 
-<h4 class="norule" style="margin-top:40px">Get just the SDK tools</h4>
-
-<p>If you do not need Android Studio, you can download the basic
-Android SDK tools below.</p>
-
-  <table class="download">
-    <tr>
-      <th>Platform</th>
-      <th>SDK tools package</th>
-      <th>Size</th>
-      <th>SHA-1 checksum</th>
-  </tr>
-  <tr>
-    <td rowspan="2">Windows</td>
-    <td>
-  <a onclick="return onDownload(this)" id="win-tools" data-modal-toggle="studio_tos"
-    href="//dl.google.com/android/<?cs
-var:sdk.win_installer
-?>"><?cs var:sdk.win_installer ?></a><br>
-    Includes Windows installer
-    </td>
-    <td><?cs call:size_in_mb(sdk.win_installer_bytes) ?> MB
-      <br>(<?cs var:sdk.win_installer_bytes ?> bytes)</td>
-    <td><?cs var:sdk.win_installer_checksum ?></td>
-  </tr>
-  <tr>
-    <!-- blank TD from Windows rowspan -->
-    <td>
-  <a onclick="return onDownload(this)" id="win-tools2" data-modal-toggle="studio_tos"
-    href="//dl.google.com/android/<?cs var:sdk.win_download
-?>"><?cs var:sdk.win_download ?></a><br>
-    No Windows installer
-    </td>
-    <td><?cs call:size_in_mb(sdk.win_bytes) ?> MB
-      <br>(<?cs var:sdk.win_bytes ?> bytes)</td>
-    <td><?cs var:sdk.win_checksum ?></td>
-  </tr>
-  <tr>
-    <td><nobr>Mac OS X</nobr></td>
-    <td>
-  <a onclick="return onDownload(this)" id="mac-tools" data-modal-toggle="studio_tos"
-    href="//dl.google.com/android/<?cs
-var:sdk.mac_download
-?>"><?cs var:sdk.mac_download ?></a>
-    </td>
-    <td><?cs call:size_in_mb(sdk.mac_bytes) ?> MB
-      <br>(<?cs var:sdk.mac_bytes ?> bytes)</td>
-    <td><?cs var:sdk.mac_checksum ?></td>
-  </tr>
-  <tr>
-    <td>Linux</td>
-    <td>
-  <a onclick="return onDownload(this)" id="linux-tools" data-modal-toggle="studio_tos"
-    href="//dl.google.com/android/<?cs
-var:sdk.linux_download
-?>"><?cs var:sdk.linux_download ?></a>
-    </td>
-    <td><?cs call:size_in_mb(sdk.linux_bytes) ?> MB
-      <br>(<?cs var:sdk.linux_bytes ?> bytes)</td>
-    <td><?cs var:sdk.linux_checksum ?></td>
-  </tr>
-  </table>
-  <p>
-Also see the <a href="<?cs var:toroot ?>tools/sdk/tools-notes.html">SDK
-tools release notes</a>.</p>
-
-  </div><!-- end wrap -->
-  </section>
+</div><!-- end pax -->
 
 
-<?cs ########  The Android Studio version of the download script ######### ?>
+
+
+
 <script>
+
+  if (location.hash == "#Requirements") {
+    $('.reqs').show();
+  } else if (location.hash == "#ExistingIDE") {
+	 $('.ide').show();
+  }
+
   var os;
   var bundlename;
   var $toolslink;
@@ -447,9 +435,7 @@
     $('#not-supported').hide();
 
     /* set up primary Android Studio download button */
-    idname = bundlename + "-size";
-    sizeMB = $(idname).text().split(' MB')[0];
-    $('.download-bundle-button > .small').html(" for " + os + " <em>(" + sizeMB + " MB)</em>");
+    $('.download-bundle-button > .small').html(" for " + os);
     $('.download-bundle-button').click(function() {return onDownload(this,true,true);}).attr('href', bundlename);
   }
 
@@ -467,10 +453,13 @@
     if (bundle && !button) {
       $("a#downloadForRealz").attr("name", "#" + $(link).attr('id'));
     } else {
-      $("h2#tos-header").text('Download the Android SDK Tools');
       $("a#downloadForRealz").attr("name", $(link).attr('href'));
     }
 
+    $("#tos").show();
+    $("#landing").hide();
+
+    location.hash = "top";
     return false;
   }
 
@@ -498,24 +487,22 @@
 
   function onDownloadForRealz(link) {
     if ($("input#agree").is(':checked')) {
+      location.hash = "";
+      location.hash = "top";
       $("div.sdk-terms").slideUp();
-      if ($("#downloadForRealz").attr('bundle') == 'true') {
-        $("h2#tos-header").text('Now downloading Android Studio!');
-        $(".sdk-terms-intro").text('Redirecting to the install instructions...');
-        $("#sdk-terms-form").slideUp(function() {
-          setTimeout(function() {
-            window.location = "/sdk/installing/index.html";
-          }, 2000);
-        });
-      } else {
-        $("h2#tos-header").text('Now downloading the Android SDK Tools!');
-        $(".sdk-terms-intro").html("<p>Because you've chosen to download " +
-          "only the Android SDK tools (and not Android Studio), there are no " +
-          "setup procedures to follow.</p><p>For information about how to " +
-          "keep your SDK tools up to date, refer to the " +
-          "<a href='/tools/help/sdk-manager.html'>SDK Manager</a> guide.</p>");
-        $("#sdk-terms-form").slideUp();
-      }
+      $("h1#tos-header").text('Now downloading...');
+      $(".sdk-terms-intro").text('You\'ll be redirected to the install instructions in a moment.');
+      $("#sdk-terms-form").fadeOut('slow', function() {
+        setTimeout(function() {
+          if ($("#downloadForRealz").attr('bundle') == 'true') {
+            // User downloaded the studio Bundle
+            window.location = "/sdk/installing/index.html?pkg=studio";
+          } else {
+            // User downloaded the SDK Tools
+            window.location = "/sdk/installing/index.html?pkg=tools";
+          }
+        }, 3000);
+      });
       ga('send', 'event', 'SDK', 'IDE and Tools', $("#downloadForRealz").html());
       return true;
     } else {
@@ -533,7 +520,7 @@
 
 
 
-
+</div><!-- end the wrapper used for relative/absolute positions  -->
 <?cs # THIS DIV WAS OPENED IN INDEX.JD ?>
 
 
@@ -582,11 +569,6 @@
 </div><!-- end g-unit -->
 
 <?cs include:"trailer.cs" ?>
-<script src="https://developer.android.com/ytblogger_lists_unified.js?v=17" type="text/javascript"></script>
-<script src="/jd_lists_unified.js?v=17" type="text/javascript"></script>
-<script src="/jd_extras.js?v=17" type="text/javascript"></script>
-<script src="/jd_collections.js?v=17" type="text/javascript"></script>
-<script src="/jd_tag_helpers.js?v=17" type="text/javascript"></script>
 
 <!-- Start of Tag -->
 <script type="text/javascript">