function getScroll () {
	var Obj = new Object();
	var scrollX1,scrollX2,scrollX3,scrollY1,scrollY2,scrollY3,docW1,docW2,docH1,docH2,winW1,winW2,winW3,winH1,winH2,winH3;
	if (document.documentElement) {
		scrollX1 = document.documentElement.scrollLeft || 0;
		scrollY1 = document.documentElement.scrollTop || 0;
		docW1 = document.documentElement.scrollWidth || 0;
		docH1 = document.documentElement.scrollHeight || 0;
		winW1 = document.documentElement.clientWidth;
		winH1 = document.documentElement.clientHeight;
	}
	if (document.body) {
		scrollX2 = document.body.scrollLeft || 0;
		scrollY2 = document.body.scrollTop || 0;
		docW2 = document.body.scrollWidth || 0;
		docH2 = document.body.scrollHeight || 0;
		winW2 = document.body.clientWidth;
		winH2 = document.body.clientHeight;
	}
	scrollX3 = window.scrollX || 0;
	scrollY3 = window.scrollY || 0;
	winW3 = window.innerWidth;
	winH3 = window.innerHeight;
	Obj.scrollX = Math.max(scrollX1, Math.max(scrollX2, scrollX3));
	Obj.scrollY = Math.max(scrollY1, Math.max(scrollY2, scrollY3));
	Obj.docW = Math.max(docW1, docW2);
	Obj.docH = Math.max(docH1, docH2);
	Obj.winW = Math.min(winW1, Math.min(winW2, winW3));
	Obj.winH = Math.min(winH1, Math.min(winH2, winH3));
	return Obj;
};

$.fn.goElementScroll = function(){
	var objX,objY,scrollX,scrollY;
	var Obj = getScroll();
	var maxX = Obj.docW - Obj.winW;
	var maxY = Obj.docH - Obj.winH;
	var coz = $(this).attr("href");
	coz = coz.split("#")[1];
	var offSetleft;
	var offSettop;
	if($("#"+coz).offset()){
		offSetleft=$("#"+coz).offset().left;
		offSettop=$("#"+coz).offset().top;
		}else{
		offSetleft=0;
		offSettop=0;
		} 
	objX = offSetleft
	objY = offSettop;
	if (objX > maxX) { objX = maxX; }
	if (objY > maxY) { objY = maxY; }
	movex=objX-Obj.scrollX;
	movey=objY-Obj.scrollY;
	goScroll(objX,objY,movex,movey);
	return false;
};
goScroll = function(a,b,c,d){
	zx=a;
	zy=b;
	movex= c;
	movey= d;
	if(movex>=-5 & movex<=5){movex=0;}
	if(movey>=-5 & movey<=5){movey=0;}
	movex=Math.round(movex/1.2);
	movey=Math.round(movey/1.2);
	averageX = zx - movex;
	averageY = zy - movey;
	window.scrollTo(averageX,averageY);
	if (movex != 0 || movey != 0) {
		window.setTimeout("goScroll(zx,zy,movex,movey)", 30);
	}
	return false;
};
$(function(){
	$("a[href^='#']")
		.click(function(){
			$(this).goElementScroll();
			return false;});
});