  ;(function(){
    // init search
    $('.theme-switch a').click(function (e) {
      if ($(this).hasClass('active')) {
        return;
      }
      e.preventDefault();
      var url = $(this).attr('href');
      $('header .phone iframe').attr('src', url);
      $('.theme-switch a').toggleClass('active');
      $('header .phone').toggleClass('phone-android');
      $('header .phone .fullscreen').attr('href', url);
    });

    // Docs scroll spy
    var demoDevicePreviewLink;
    function handleDeviceScroll() {
      var st = $(window).scrollTop();
      var firstPreviewPosition = $('[data-device-preview]:first').offset().top;
      var device = $('.docs-demo-device:not(.docs-inline-device)');
      device.addClass('visible');
      var deviceStartOffset = device.parent().offset().top;
      var devicePosition = st - deviceStartOffset;
      if(devicePosition < firstPreviewPosition - deviceStartOffset) {
        devicePosition = firstPreviewPosition -  deviceStartOffset;
      }
      if (devicePosition + device.outerHeight() > device.parent().outerHeight()) {
        devicePosition = device.parent().outerHeight() - device.outerHeight();
      }
      var stopPosition;
      if ($('.stop-scroll-device').length > 0) {
        stopPosition = $('.stop-scroll-device').offset().top;
      } else {
        stopPosition = $('.docs-content .with-device').offset().top + $('.docs-content .with-device').outerHeight();
      }
      if (stopPosition) {
        if (devicePosition + device.outerHeight() > stopPosition - deviceStartOffset) {
          devicePosition = stopPosition - device.outerHeight() - deviceStartOffset;
        }
      }
      device.css({top: devicePosition});
      var newPreviewLink;
      $('[data-device-preview]').each(function(){
        var link = $(this);
        if (link.offset().top < st + $(window).height()/2 - 200) {
          newPreviewLink = link.attr('data-device-preview');
        }
      });
      if (!newPreviewLink) newPreviewLink = $('[data-device-preview]:first').attr('data-device-preview');
      if (newPreviewLink !== demoDevicePreviewLink) {
        demoDevicePreviewLink = newPreviewLink;
        device.find('.fade-overlay').addClass('visible');
        var onLoadTriggerd;
        device.find('iframe')[0].onload = function() {
          onLoadTriggerd = true;
          setTimeout(function () {
            device.find('.fade-overlay').removeClass('visible');
          }, 0);
        };
        setTimeout(function () {
          if (!onLoadTriggerd) {
            device.find('.fade-overlay').removeClass('visible');
          }
        }, 1000);
        device.find('iframe').attr('src', newPreviewLink);
      }
    }
    if ($('.docs-content .with-device').length > 0) {
      $(window).resize(function(){
        handleDeviceScroll();
      });
      $(window).scroll(function(){
        handleDeviceScroll();
      });
      handleDeviceScroll();
    }
    if ($('.docs-demo-device').length > 0) {
      $('.docs-demo-device-buttons a').on('click', function (e) {
        e.preventDefault();
        var a = $(this);
        if (a.hasClass('active')) return;
        a.parent().find('.active').removeClass('active');
        a.addClass('active');
        var device = a.parents('.docs-demo-device');
        var theme = a.attr('data-theme');
        var src = device.find('iframe').attr('src');
        device.find('.fade-overlay').addClass('visible');
        device
          .removeClass('docs-demo-device-ios docs-demo-device-android')
          .addClass('docs-demo-device-' + (theme === 'md' ? 'android' : 'ios'));
        device.find('iframe').attr('src', src.split('?')[0] + '?theme=' + theme);
        setTimeout(function () {
          device.find('.fade-overlay').removeClass('visible');
        }, 1000);
      });
    }

    })();