////////////////////////
// Scroller Functions //
////////////////////////
// 
// Original:        Eddie Traversa (psych3@primus.com.au)
// Web Site:        http://dhtmlnirvana.com/
// Customization:   Peter Krebs (peka@yashuu.de)

window.onerror = null;
var topMargin      = 157;
var topMarginStart = 157;
var slideTime      = 2000;
var slideOn        = 1;
var ns6 = (!document.all && document.getElementById);
var ie4 = (document.all);
var ns4 = (document.layers);

function toggleSlide() {
    if(slideOn==1)
        slideOn = 0;
    else
        slideOn = 1;
    
    mainTrigger();
}

function layerObject(id,left) {
    if (ns6) {
        this.obj = document.getElementById(id).style;
        this.obj.left = left;
        return this.obj;
    }
    else if(ie4) {
        this.obj = document.all[id].style;
        this.obj.left = left;
        return this.obj;
    }
    else if(ns4) {
        this.obj = document.layers[id];
        this.obj.left = left;
        return this.obj;
    }
}

function layerSetup() {
    floatLyr = new layerObject('floatLayer', 13);
    window.setInterval("main()", 20)
}

function floatObject() {
    if (ns4 || ns6) {
        findHt = window.innerHeight;
    } else if(ie4) {
        findHt = document.body.clientHeight;
    }
} 

function main() {
    if (ns4) {
        this.currentY = document.layers["floatLayer"].top;
        this.scrollTop = window.pageYOffset;
        mainTrigger();
    }
    else if(ns6) {
        this.currentY = parseInt(document.getElementById('floatLayer').style.top);
        this.scrollTop = scrollY;
        mainTrigger();
    } else if(ie4) {
        this.currentY = floatLayer.style.pixelTop;
        this.scrollTop = document.body.scrollTop;
        mainTrigger();
    }
}

function mainTrigger() {
    var newTargetY = 0;
    if(slideOn)
        newTargetY = this.scrollTop + this.topMargin;
    else
        newTargetY = this.topMargin + this.topMarginStart;
    
    if ( this.currentY != newTargetY ) {
        if ( newTargetY != this.targetY ) {
            this.targetY = newTargetY;
            
            if (this.scrollTop > topMarginStart-30 && slideOn==1)
                this.topMargin = 5;
            else if(slideOn==1)
                this.topMargin = this.topMarginStart-this.scrollTop;
            else
                this.topMargin = 0;
            
            floatStart();
        }
        animator();
    }
}

function floatStart() {
    var now = new Date();
    this.A = this.targetY - this.currentY;
    this.B = Math.PI / ( 2.0 * this.slideTime );
    this.C = now.getTime();
    if (Math.abs(this.A) > this.findHt) {
        this.D = this.A > 0 ? this.targetY - this.findHt : this.targetY + this.findHt;
        this.A = this.A > 0 ? this.findHt : -this.findHt;
    }
    else {
        this.D = this.currentY;
    }
}

function animator() {
    var now = new Date();
    var newY = this.A * Math.sin( this.B * ( now.getTime() - this.C ) ) + this.D;
    newY = Math.round(newY);
    if (( this.A > 0 && newY > this.currentY ) || ( this.A < 0 && newY < this.currentY )) {
        if ( ie4 )document.all.floatLayer.style.pixelTop = newY;
        if ( ns4 )document.layers["floatLayer"].top = newY;
        if ( ns6 )document.getElementById('floatLayer').style.top = newY + "px";
    }
}

function start() {
    if(ns6||ns4) {
        pageWidth = innerWidth;
        pageHeight = innerHeight;
        layerSetup();
        floatObject();
    }
    else if(ie4) {
        pageWidth = document.body.clientWidth;
        pageHeight = document.body.clientHeight;
        layerSetup();
        floatObject();
    }
}