
Date.implement({
  timeSince: function(){
    var chunks = [
      [31536000, 'year', 'years'],
      [2592000, 'month', 'months'],
      [604800, 'week', 'weeks'],
      [86400, 'day', 'days'],
      [3600, 'hour', 'hours'],
      [60, 'minute', 'minutes']
    ];
    var since = ((new Date().getTime()) - this.getTime()) / 1000;
    var seconds, name, pname, count;
    if (since < 180) return 'recently';
    for (var i=0; i < chunks.length; i++) {
      seconds = chunks[i][0];
      name = chunks[i][1];
      pname = chunks[i][2];
      count = Math.floor(since / seconds);
      if (count != 0) break;
    }
    var output = (count == 1) ? '1 '+name : count+' '+pname;
    if (i+1 < chunks.length) {
      var seconds2 = chunks[i+1][0];
      var name2 = chunks[i+1][1];
      var pname2 = chunks[i+1][2];
      var count2 = Math.floor((since-(seconds*count))/seconds2);
      if (count2 != 0) output += (count2 == 1) ? ', 1 '+name2 : ', '+count2+' '+pname2;
    }
    return output + ' ago';
  }
});

var ready = false;
function twitter(data){
  var set = function(){
    var created_at = data[0].created_at;
    if (Browser.Engine.trident)
      created_at = created_at.replace(/ \+[\d]{4}/, '');
    $('twitter_date').set('text', new Date(created_at).timeSince());
    $('twitter_text').set('text', data[0].text);
  }
  if (!ready) window.addEvent('domready', set);
  else set();
}

// CustomCursor

var CustomCursor = new Class({
  
  Implements: [Options, Events],
  
  options: {
    
  },
  
  initialize: function(url, options) {
    this.setOptions(options);
    this.loaded = false;
    this.image = new Image;
    this.image.onload = this.imageLoad.bindWithEvent(this);
    this.image.src = url;
    this.url = url;
  },
  
  imageLoad: function(event){
    this.loaded = true;
    this.fireEvent('load');
  },
  
  show: function(){
    if (!this.loaded) {
      this.addEvent('load', this.show);
      return this;
    }
    if (Browser.Engine.webkit) {
      console.log('url('+this.image.src+')');
      document.body.style.cursor = 'url('+this.image.src+')';
    }
    console.log('Showing Cursor!');
  }
  
});


if (typeof console == 'undefined') var console = { log: function(){} }

window.addEvent('domready', function(){
  
  ready = true;
  
  var posterFx = new Fx.Tween('poster', {
    duration: 1100,
    transition: 'quint:out'
  });
  
  posterFx.set('top', 0);
  
  var posterBack = function(){
    posterFx.cancel();
    posterFx.start('top', 0);
    var eh = Browser.Engine.trident ? document : window;
    eh.removeEvent('click', posterBack);
    eh.removeEvent('mousemove', moveButton);
    showCursor();
    moveButton({page: {x: 0, y:-36}});
    return false;
  };
  
  var closeButton = $('closebutton');
  var bo = $H(closeButton.getStyles('width', 'height')).map(function(v){
    return v.toInt();
  });
  
  var moveButton = function(e){
    closeButton.setStyles({
      top: e.page.y - (bo.height / 2),
      left: e.page.x- (bo.width / 2)
    });
  };
  
  var hideCursor = function(){
    if (Browser.Engine.trident) {
      $(document.body).setStyle('cursor', 'url(blank.cur)');
      closeButton.setStyle('cursor', 'url(blank.cur)');
    } else {
      closeButton.setStyle('cursor', 'none');
    }
  }
  
  var showCursor = function(){
    $(document.body).setStyle('cursor', 'auto');
    closeButton.setStyle('cursor', 'auto');
  }
  
  $('preview_basic_link').addEvent('click', function(e){
    posterFx.start('top', -780).chain(function(){
      closeButton.fade(Browser.Engine.trident ? 'show' : 'in');
    });
    closeButton.fade('hide');
    moveButton(e);
    hideCursor();
    var eh = Browser.Engine.trident ? document : window;
    eh.addEvent('click', posterBack);
    eh.addEvent('mousemove', moveButton);
    return false;
  });
  
  $$('#purchase_link, #preview_basic_link').addEvents({
    mouseenter: function(){
      this.set('src', this.retrieve('image').split('.')[0]+'_over.png');
    },
    mouseleave: function(){
      this.set('src', this.retrieve('image'));
    }
  }).each(function(el){
    var src = el.get('src');
    new Image().src = src.split('.')[0]+'_over.png';
    el.store('image', src);
  });
  
});

/* Google Analytics */
window.addEvent('load', function(){
  window.pageTracker = _gat._getTracker('UA-9154060-1');
  window.pageTracker._trackPageview();
});

