var scrollInt;
var scrTime, scrSt, scrDist, scrDur, scrInt, scrSl, scrDistX;

function easeInOut(t,b,c,d) {
	return (c/2 * (1 - Math.cos(Math.PI*t/d)) + b);
}

scrollPage = function() {
	scrTime += scrInt;

	if (scrTime < scrDur) window.scrollTo(easeInOut(scrTime,scrSl,scrDistX,scrDur), easeInOut(scrTime,scrSt,scrDist,scrDur));
	else {
		window.scrollTo(scrSl+scrDistX, scrSt+scrDist);
		clearInterval(scrollInt);
	}
}

jQuery.fn.extend({
	smoothScroll : function(duration, velocity, marginLeft, marginTop) {
		if(typeof(duration) == 'undefined') duration = 400;
		if(typeof(velocity) == 'undefined') velocity = 500;
		if(typeof(marginLeft) == 'undefined') marginLeft = 0;
		if(typeof(marginTop) == 'undefined') marginTop = 0;
		
		this.click(function(){
			var element_id= $(this).attr("href");
			if (element_id=="#topo") marginTop=0;
			else marginTop=-180;
			
			//alert(element_id+" "+marginTop);
			
			var source_positions = {
				top : $(this).get(0).offsetTop,
				left : $(this).get(0).offsetLeft
			}
			var dest_positions = {
				top : $(element_id).get(0).offsetTop-marginTop,
				left : $(element_id).get(0).offsetLeft-marginLeft
			}

			if (window.scrollY) scrSt = window.scrollY;
			else if (document.documentElement.scrollTop) scrSt = document.documentElement.scrollTop;
			else scrSt = document.body.scrollTop;
				
			if (window.scrollX) scrSl = window.scrollX;
			else if (document.documentElement.scrollLeft) scrSl = document.documentElement.scrollLeft;
			else scrSl = document.body.scrollLeft;

			scrDist = dest_positions.top - scrSt
			scrDistX = dest_positions.left - scrSl
			scrDur = 500
			scrTime = 0
			scrInt = 5

			// set interval
			clearInterval(scrollInt)
			scrollInt = setInterval(scrollPage, scrInt)
			
			//window.top.location.href= element_id;
			return false;
		})
	}
})