aboutsummaryrefslogtreecommitdiff
path: root/public/javascripts/octopress.js
blob: bf94ebe40525856bb5df23ac8c73ed1a7750b650 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
window.addEvent('domready', function() {
  codeblocks = $$('div.highlight');
  codeblocks.each(addExpander);
});

window.addEvents({
  domready: function(){
    if(twitter_user){
      new Request.Twitter(twitter_user, {
        include_replies: false,
        data: { count: 3 },
        onSuccess: function(tweets){
          $('tweets').empty();
          for (var i = tweets.length; i--; ){
            new Element('li', {
              'class': 'tweet'
              }).adopt(
              new Element('p', { 'html': tweets[i].text+' ' }).adopt(
                new Element('a', {
                  'href': 'http://twitter.com/'+twitter_user+'/status/'+tweets[i].id_str,
                  'text': new Date(tweets[i].created_at).timeDiffInWords()
                }))
            ).inject('tweets', 'top');
          }
        }
      }).send();
    }
    $$('#recent_posts time').each(function(date){
      date.set('text', new Date(date.get('text')).timeDiffInWords());
    });
  },
});


function addExpander(div){
  new Element('span',{
		html: 'expand »',
		'class': 'pre_expander',
    'events': {
      'click': function(){
        toggleExpander(this);
      }
    }
	}).inject(div, 'top');
}
function toggleExpander(expander){
  var html = '';
  var expanderPos = expander.getPosition().y;
  if($('page').toggleClass('expanded').hasClass('expanded'))
    html = '« contract';
  else
    html = 'expand »';
  $$('div.highlight span.pre_expander').each(function(span){
      span.set('html',html);
  });
  fixScroll(expander, expanderPos);
}
function fixScroll(el, position){
  pos = el.getPosition().y - position;
  window.scrollTo(window.getScroll().x ,window.getScroll().y + pos);
}
function enableCompressedLayout(codeblocks){
  if(!codeblocks.length) return;
  new Element('span',{
		html: 'Collapse layout',
		'id': 'collapser',
    'events': {
      'click': function(){
        if($('page').toggleClass('collapsed').hasClass('collapsed'))
          this.set('html','Expand layout');
        else
          this.set('html','Collapse layout');
      }
    }
	}).inject($('main'), 'top');
}