123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- /*!
- * Documenter 2.0
- * http://rxa.li/documenter
- *
- * Copyright 2011, Xaver Birsak
- * http://revaxarts.com
- *
- */
-
- $(document).ready(function() {
- var timeout,
- sections = new Array(),
- sectionscount = 0,
- win = $(window),
- sidebar = $('#documenter_sidebar'),
- nav = $('#documenter_nav'),
- logo = $('#documenter_logo'),
- navanchors = nav.find('a'),
- timeoffset = 50,
- hash = location.hash || null;
- iDeviceNotOS4 = (navigator.userAgent.match(/iphone|ipod|ipad/i) && !navigator.userAgent.match(/OS 5/i)) || false,
- badIE = $('html').prop('class').match(/ie(6|7|8)/)|| false;
-
- //handle external links (new window)
- $('a[href^=http]').bind('click',function(){
- window.open($(this).attr('href'));
- return false;
- });
-
- //IE 8 and lower doesn't like the smooth pagescroll
- if(!badIE){
- window.scroll(0,0);
-
- $('a[href^=#]').bind('click touchstart',function(){
- hash = $(this).attr('href');
- $.scrollTo.window().queue([]).stop();
- goTo(hash);
- return false;
- });
-
- //if a hash is set => go to it
- if(hash){
- setTimeout(function(){
- goTo(hash);
- },500);
- }
- }
-
-
- //We need the position of each section until the full page with all images is loaded
- win.bind('load',function(){
-
- var sectionselector = 'section';
-
- //Documentation has subcategories
- if(nav.find('ol').length){
- sectionselector = 'section, h4';
- }
- //saving some information
- $(sectionselector).each(function(i,e){
- var _this = $(this);
- var p = {
- id: this.id,
- pos: _this.offset().top
- };
- sections.push(p);
- });
-
-
- //iPhone, iPod and iPad don't trigger the scroll event
- if(iDeviceNotOS4){
- nav.find('a').bind('click',function(){
- setTimeout(function(){
- win.trigger('scroll');
- },duration);
-
- });
- //scroll to top
- window.scroll(0,0);
- }
-
- //how many sections
- sectionscount = sections.length;
-
- //bind the handler to the scroll event
- win.bind('scroll',function(event){
- clearInterval(timeout);
- //should occur with a delay
- timeout = setTimeout(function(){
- //get the position from the very top in all browsers
- pos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
-
- //iDeviceNotOS4s don't know the fixed property so we fake it
- if(iDeviceNotOS4){
- sidebar.css({height:document.height});
- logo.css({'margin-top':pos});
- }
- //activate Nav element at the current position
- activateNav(pos);
- },timeoffset);
- }).trigger('scroll');
-
- });
-
- //the function is called when the hash changes
- function hashchange(){
- goTo(location.hash, false);
- }
-
- //scroll to a section and set the hash
- function goTo(hash,changehash){
- win.unbind('hashchange', hashchange);
- hash = hash.replace(/!\//,'');
- win.stop().scrollTo(hash,duration,{
- easing:easing,
- axis:'y'
- });
- if(changehash !== false){
- var l = location;
- location.href = (l.protocol+'//'+l.host+l.pathname+'#!/'+hash.substr(1));
- }
- win.bind('hashchange', hashchange);
- }
-
-
- //activate current nav element
- function activateNav(pos){
- var offset = 100,
- current, next, parent, isSub, hasSub;
- win.unbind('hashchange', hashchange);
- for(var i=sectionscount;i>0;i--){
- if(sections[i-1].pos <= pos+offset){
- navanchors.removeClass('current');
- current = navanchors.eq(i-1);
- current.addClass('current');
-
- parent = current.parent().parent();
- next = current.next();
-
- hasSub = next.is('ul');
- isSub = !parent.is('#documenter_nav');
-
- nav.find('ol:visible').not(parent).slideUp('fast');
- if(isSub){
- parent.prev().addClass('current');
- parent.stop().slideDown('fast');
- }else if(hasSub){
- next.stop().slideDown('fast');
- }
- win.bind('hashchange', hashchange);
- break;
- };
- }
- }
-
- // make code pretty
- window.prettyPrint && prettyPrint();
-
- });
|