
function ScrollChaser( id, int ) {
	this.interval = int;
	this.id = id;
	return this;
}

//
ScrollChaser.prototype.init = function() {
	var callback = this.setting;
	var scope = this;
	//
	try {
		window.addEventListener('load', function() { callback.call( scope ) }, false );
	} catch (e) {
		window.attachEvent('onload', function() { callback.call( scope ) } );
	}
}

ScrollChaser.prototype.setting = function() {
	var callback = this.scrollEvent;
	var scope = this;
	//
	this.el = document.getElementById( this.id );
	this.el.style.position = 'absolute';
	this.initTop = this.el.offsetTop;
	//
	try {
		window.addEventListener('scroll', function() { callback.call( scope ) }, false );
	} catch (e) {
		window.attachEvent('onscroll', function() { callback.call( scope ) } );
	}
}

ScrollChaser.prototype.scrollEvent = function() {
	var el = this.el;
	var init = this.initTop;
	//
	var myInt = setInterval( function() {
		var cur = ( document.body.scrollTop || document.documentElement.scrollTop );
		var myTop = el.offsetTop - 5;
		var d = cur - myTop;
		
		if(Math.abs(d) > 1) {
			if( cur >= init ) {
				var y = myTop + d / 3;
				el.style.top = y + "px";
			} else {
				el.style.top = init + "px";
				clearInterval(myInt);
				this.clear;
			}
		} else {
			el.style.top = cur + "px";
			clearInterval( myInt );
			this.clear;
		}
	}, this.interval );
}

ScrollChaser.prototype.clear = function() {
	window.removeEventListener('scroll', function() { callback.call( scope ) }, false );
}

//
var sc = new ScrollChaser( 'navigation', 800 );
sc.init();




//FUNCTION Back2Top
function doBackScroll() {
    var pos = getScrollPosition();
    window.scrollTo(Math.max(Math.floor(pos.x / 2),0), Math.max(Math.floor(pos.y - (pos.y / 5)),0));
    if (pos.x > 0 || pos.y > 0) {
        window.setTimeout("doBackScroll()", 35);
        return false;
    }
}

function getScrollPosition() {
    var obj = new Object();
    obj.x = document.body.scrollLeft || document.documentElement.scrollLeft;
    obj.y = document.body.scrollTop || document.documentElement.scrollTop;
    return obj;
}

function addListener(elem, eventType, funcRef, capture) {
    if(!elem) { return false; }

    if(elem.addEventListener) {
        elem.addEventListener(eventType, funcRef, capture);
    } else if(elem.attachEvent) {
        elem.attachEvent('on' + eventType, funcRef);
    } else {
        return false;
    }
    return true;
}

function addLoadListener(e) {
    addListener(document.getElementById('Back2Top'), 'click', doBackScroll, false);
}

addListener(window, 'load', addLoadListener, false);




/*  _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 

    ++++ Page`z scroll ++++
    
    Powered by . kerry
    
    http://202.248.69.143/~goma/
    
    動作ブラウザ :: IE4+, NN6+, Opera7+
    
    
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/  */


gValz = new Array();

function pageScroll(_tId)
{
    // スクロールする距離
    gValz.scrollLength = 8;
    
    // 時間（ 1000 = １秒 ）
    var speedLength = 10;
    
    if (gValz.timeId) clearInterval(gValz.timeId);
    if (document.all && !window.opera)
    {   
        with(document.body){
        var winHeight   = clientHeight;
        var docHeight   = scrollHeight;
        var pTopPos     = scrollTop;
        gValz.pLeftPos  = scrollLeft;
        }
        var obj = document.all(_tId);
    }
    else
    {
        var winHeight   = window.innerHeight;
        var docHeight   = document.height;
        var pTopPos     = window.pageYOffset;
        gValz.pLeftPos  = window.pageXOffset;
        var obj = document.getElementById ? document.getElementById(_tId) : document.body;//"";
    }

    if (!obj || !docHeight || (obj && !obj.offsetTop)) return true;

    gValz.targetElmPos = obj.offsetTop;
    if (gValz.targetElmPos+ winHeight > docHeight) gValz.targetElmPos = docHeight- winHeight;
    gValz.udFlag    = !!(gValz.targetElmPos<pTopPos);
    gValz.tpTopPos  = pTopPos;
    gValz.timeId    = setInterval("pScrolling()", speedLength);

    return false;
}



function pScrolling()
{   
        var tempPTop = document.all ? document.body.scrollTop : window.pageYOffset;
        var endFlag=0;
        if (!gValz.udFlag)
        {
            gValz.tpTopPos += Math.ceil((gValz.targetElmPos- tempPTop) * (gValz.scrollLength/100));
            if (gValz.targetElmPos <= gValz.tpTopPos) endFlag=1;
        }
        else
        {
            gValz.tpTopPos -= Math.ceil((tempPTop- gValz.targetElmPos)* (gValz.scrollLength/100));
            if (gValz.targetElmPos >= gValz.tpTopPos) endFlag=1;
        }
        
        if (endFlag)
        {
            gValz.tpTopPos = gValz.targetElmPos;
            gValz.timeId = clearInterval(gValz.timeId);
        }
        scrollTo(gValz.pLeftPos, gValz.tpTopPos)
}


