$(function() { var doc; var device; var platformToggle; var windowWidth; var windowHeight; var pageHeight; var contentPadding; var footerHeight; var noticeBanner; var componentsList; var navComponentLinks; var contentSection; var currentActive; var topCache; var eventListeners; var initialize = function () { currentActive = 0; topCache = []; win = $(window); doc = $(document); bod = $(document.body) device = device || $('.device'); platformToggle = $('.platform-toggle'); noticeBanner = $('.notice-banner'); navComponentLinks = $('.nav-components-link'); componentsList = $('.components-list'); componentLinks = $('.component-example a'); contentSection = $('.component'); topCache = contentSection.map(function () { return $(this).offset().top }) windowHeight = $(window).height() / 3 pageHeight = $(document).height(); contentPadding = parseInt($('.docs-content').css('padding-bottom')); footerHeight = $('.docs-footer').outerHeight(false); device.initialLeft = device.offset().left; device.initialTop = device.initialTop || device.offset().top; device.dockingOffset = ($(window).height() + platformToggle.outerHeight() - device.height())/2; checkDesktopContent(); calculateScroll(); if (!eventListeners) addEventListeners(); } var addEventListeners = function () { eventListeners = true; noticeBanner.on('click', function () { $(this).hide(); }); device.on('click', function (e) { e.preventDefault(); }); navComponentLinks.click(function(e) { e.stopPropagation(); e.preventDefault(); componentsList.toggleClass('active'); }) doc.on('click', function () { componentsList.removeClass('active'); }) // Platform switcher $('.platform-switch').on('click', function () { var components = $('.docs-components'); var platform = $(this).attr('data-platform'); // Set platform if (components.hasClass('platform-ios')) { components.removeClass('platform-ios'); components.addClass(platform); } else if (components.hasClass('platform-android')) { components.removeClass('platform-android'); components.addClass(platform); } else { components.addClass(platform); } // Deal with selected states $(this).siblings('.selected').removeClass('selected'); $(this).addClass('selected'); }); win.on('scroll', calculateScroll); } var checkDesktopContent = function () { windowWidth = $(window).width(); if (windowWidth <= 768) { var content = $('.content') if (content.length > 1) { $(content[0]).remove() } } } var calculateScroll = function() { // if small screen don't worry about this if (windowWidth <= 768) return // Save scrollTop value var contentSectionItem; var currentTop = win.scrollTop(); if((device.initialTop - currentTop) <= device.dockingOffset + 41) { device[0].className = "device device-fixed"; device.css({top: device.dockingOffset}) } else { device[0].className = "device" device[0].setAttribute('style','') } if(currentTop >= $('.docs-masthead').outerHeight()) { platformToggle.addClass('fixed'); $('.docs-components').css('padding-top', platformToggle.outerHeight()); } else { platformToggle.removeClass('fixed'); $('.docs-components').css('padding-top', 0); } // Injection of components into device for (var l = contentSection.length; l--;) { if ((topCache[l] - currentTop) < windowHeight) { if (currentActive == l) return; currentActive = l; bod.find('.component.active').removeClass('active'); contentSectionItem = $(contentSection[l]) contentSectionItem.addClass('active') if(contentSectionItem.attr('id')) { device.attr("id", contentSectionItem.attr('id') + "InDevice"); } else { device.attr("id", "") } if (!contentSectionItem.hasClass('informational')) { updateContent(contentSectionItem.find('.highlight .html').text()) } break } } function updateContent(content) { $('#iwindow').html(content); } } $(window).on('load resize', initialize); $(window).on('load', function () { new FingerBlast('.device-content'); }); });