document.addEvent('domready',function(){

  $$('.submenu ul li a').addEvent('click', function(e){
    e.stop();
    var target = this.get('href'),
        self   = this;
    new Request.HTML({
      url: target,
      onSuccess: function(html){
        var container = $('fence');
        container.set('text', '');
        container.adopt(html);
        $$('.submenu ul li a.active').removeClass('active');
        self.addClass('active');
        new Fx.Scroll(document.body).toElement('submenu');
      },
      onFailure: function(html){
        new Growl('Somesing went wrong', {type: 'alert'});
      }
    }).get();
    return false;
  });

  $('login-link').addEvent('click', function(e){
    e.stop();
    $(document.body).addEvent('click', function(e){
      $('login-form').setStyle('display', 'none');
      this.removeEvent('click', arguments.callee);
    });
    $('login-form').setStyle('display', 'block').addEvent('click', function(e){
      e.stopPropagation();
    });
  });
});

Fx.Scroll = new Class({

	Extends: Fx,

	options: {
		offset: {x: 0, y: 0},
		wheelStops: true
	},

	initialize: function(element, options){
		this.element = this.subject = document.id(element);
		this.parent(options);
		var cancel = this.cancel.bind(this, false);

		if ($type(this.element) != 'element') this.element = document.id(this.element.getDocument().body);

		var stopper = this.element;

		if (this.options.wheelStops){
			this.addEvent('start', function(){
				stopper.addEvent('mousewheel', cancel);
			}, true);
			this.addEvent('complete', function(){
				stopper.removeEvent('mousewheel', cancel);
			}, true);
		}
	},

	set: function(){
		var now = Array.flatten(arguments);
		if (Browser.Engine.gecko) now = [Math.round(now[0]), Math.round(now[1])];
		this.element.scrollTo(now[0], now[1]);
	},

	compute: function(from, to, delta){
		return [0, 1].map(function(i){
			return Fx.compute(from[i], to[i], delta);
		});
	},

	start: function(x, y){
		if (!this.check(x, y)) return this;
		var scrollSize = this.element.getScrollSize(),
			scroll = this.element.getScroll(), 
			values = {x: x, y: y};
		for (var z in values){
			var max = scrollSize[z];
			if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z] : max;
			else values[z] = scroll[z];
			values[z] += this.options.offset[z];
		}
		return this.parent([scroll.x, scroll.y], [values.x, values.y]);
	},

	toElement: function(el){
		var position = document.id(el).getPosition(this.element);
		return this.start(position.x, position.y);
	}

});