fx.Scroll = Class.create();
fx.Scroll.prototype = Object.extend(new fx.Base(), {
	initialize: function(options) {
		this.setOptions(options);
	},

	scrollTo: function(el){
		var desty = Position.cumulativeOffset($(el));
		var dest = desty[1];
		var client = window.innerHeight || document.documentElement.clientHeight;
		var full = document.documentElement.scrollHeight;
		var top = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
		if (dest+client > full) this.custom(top, dest - client + (full-dest));
		else this.custom(top, dest);
	},

	increase: function(){
		window.scrollTo(0, this.now);
	}
});
var Position = {
	cumulativeOffset: function(element) {
		var valueT = 0, valueL = 0;
		do {
		valueT += element.offsetTop  || 0;
		valueL += element.offsetLeft || 0;
		element = element.offsetParent;
		} while (element);
		return [valueL, valueT];
	}
}
var ScrollLinks = {
	currentHash: false,
	start: function(){
		this.scroll = new fx.Scroll({duration: 800, onComplete: function(){ScrollLinks.end();}});
		this.allinks = document.getElementsByTagName('a');
		for (i=0; i<this.allinks.length; i++){
			var lnk = this.allinks[i];
			if ((lnk.href && lnk.href.indexOf('#') != -1) && ( (lnk.pathname == location.pathname) || ('/'+lnk.pathname == location.pathname) ) && (lnk.search == location.search)) {
				lnk.onclick = function(){
					ScrollLinks.scroll.clearTimer();
					this.initialHref = this.href;
					this.initialHash = this.hash;
					this.href = "javascript:void(0)";
					setTimeout(function(){this.href = this.initialHref;}.bind(this), 200);
					ScrollLinks.click(this);
				}
			}
		}
	},

	click: function(link){
		this.currentHash = link.initialHash.substr(1);
		if (this.currentHash) {
			for (j=0; j<this.allinks.length; j++){
				if (this.allinks[j].id == this.currentHash){
					if (!window.opera) this.scroll.scrollTo(this.allinks[j]);
					else this.scroll.scrollTo(this.allinks[j].parentNode);
					break;
				}
			}
		}
	},

	end: function(){
		window.location.href = "#"+this.currentHash;
		this.currentHash = false;
	}
}

window.onload = function(){
	ScrollLinks.start();
}