// ------------------------------------ SliderClass ----------------------------------

// Globale variabelen
var slideArray = new Array();
var toFast = 950;

// Basis klasse van een slide div
function sliderClass()
{
	this.obj = null;	// ID van element dat slide
	this.fromX = 0;		// Start / huidige pos X
	this.toX = 0;		// Eind positie X
	this.fromY = 0;		// Start / huidige pos X
	this.toY = 0;		// Eind positie Y
	this.speed = 10;	// Snelheid in x stappen bij het einde
	this.timer = null; 
}

// Init slide classe en start de beweging
function startSlide(ele, toX, toY, speed, afterSlideCommand)
{
	// Init nieuwe klasse
	var mySlider	= new sliderClass();
	mySlider.obj	= document.getElementById(ele);
	mySlider.toX	= toX;
	mySlider.toY	= toY;
	mySlider.speed	= speed;
	mySlider.afterSlideCommand = afterSlideCommand;
	
	if (mySlider.obj != null) // Bestaat de slide wel
	{   
		// Haal begin pos op
		mySlider.fromX = Math.round((mySlider.obj.style.marginLeft).replace("px", ""));
		if (mySlider.fromX == "") mySlider.fromX = 0; // onbekend dus 0
		
		mySlider.fromY = Math.round((mySlider.obj.style.marginTop).replace("px", ""));
		if (mySlider.fromY == "") mySlider.fromY = 0; // onbekend dus 0
		
		// Als te ver weg dan stukje skippen voor X
		if (Math.abs(mySlider.fromX-mySlider.toX) > toFast) {
			if (mySlider.fromX < mySlider.toX) mySlider.fromX = mySlider.toX - toFast;
			if (mySlider.fromX > mySlider.toX) mySlider.fromX = mySlider.toX + toFast;
		}
		
		// Als te ver weg dan stukje skippen voor Y
		if (Math.abs(mySlider.fromY-mySlider.toY) > toFast) {
			if (mySlider.fromY < mySlider.toY) mySlider.fromY = mySlider.toY - toFast;
			if (mySlider.fromY > mySlider.toY) mySlider.fromY = mySlider.toY + toFast;
		}
		
		// Alleen iets doen als het nog niet gedaan is
		if (Math.round((mySlider.obj.style.marginLeft).replace("px", "")) != mySlider.toX || Math.round((mySlider.obj.style.marginTop).replace("px", "")) != mySlider.toY)
		{
			slideArray[ele] = mySlider; // Opslaan
			doSlide(ele); // Start bewegin
		}
	}
	
	mySlider = null;
}

// Laat de slider een stapje bewegen en zet timeout voor de volgende stap
function doSlide(ele)
{
	var mySlider = slideArray[ele];
	
	if (mySlider != null)
	{   
	    var xDiff = (Math.abs(mySlider.fromX - mySlider.toX));
	    var yDiff = (Math.abs(mySlider.fromY - mySlider.toY));
	    
		if (xDiff > 0.1 || yDiff > 0.1) 
		{
    		mySlider.fromX += (mySlider.toX-mySlider.fromX)/mySlider.speed;
			mySlider.fromY += (mySlider.toY-mySlider.fromY)/mySlider.speed;
			mySlider.obj.style.marginLeft = Math.round(mySlider.fromX) + 'px';
			mySlider.obj.style.marginTop  = Math.round(mySlider.fromY) + 'px';
			slideArray[ele] = mySlider;
			slideArray[ele].timer = setTimeout("doSlide('"+ele+"')", 15);
		}
		else {
			mySlider.timer = clearTimeout(mySlider.timer);
			if (mySlider.afterSlideCommand != null && mySlider.afterSlideCommand != "") eval(mySlider.afterSlideCommand);
			slideArray[ele] = null;
		}
		mySlider = null;
	}
}

// ------------------------------------ SliderClass ----------------------------------

// ------------------------------------ ZoomClass ------------------------------------

// Globale variabelen
var zoomArray = new Array();
var zoomtoFast = 942;

// Basis klasse van een zoom div
function zoomrClass() {
    this.obj = null; // ID van element dat zoom
    this.fromW = 0; 	// Start / huidige pos X
    this.toW = 0; 	// Eind positie X
    this.fromH = 0; 	// Start / huidige pos X
    this.toH = 0; 	// Eind positie Y
    this.speed = 8;     // Snelheid in x stappen bij het einde (hoe lager, hoe sneller)
    this.timer = null;  // Timerobject voor huidige zoombeweging
    this.curTime = -1;  // Tijdsduur van de laatste scrollbeweging
}

// Init zoom klasse en start de beweging
function startzoom(ele, toW, toH, beforezoomCommand, afterzoomCommand, zoomSpeed) {
    // Lege variabelen opvangen
    if (toH == null || toH == "") toH = 0;
    if (beforezoomCommand == null) beforezoomCommand = "";
    if (afterzoomCommand == null) afterzoomCommand = "";

    // Init nieuwe klasse
    var myzoomr = new zoomrClass();
    myzoomr.obj = document.getElementById(ele);
    myzoomr.toW = toW;
    myzoomr.toH = toH;
    myzoomr.beforezoomCommand = beforezoomCommand;
    myzoomr.afterzoomCommand = afterzoomCommand;

    // Speed instellen
    if (zoomSpeed != null && zoomSpeed != "") {
        myzoomr.speed = zoomSpeed;
    }

    if (myzoomr.obj != null) // Bestaat de zoom wel
    {
        // Haal begin pos op
        myzoomr.fromW = Math.round((myzoomr.obj.style.width).replace("px", ""));
        if (myzoomr.fromW == "") myzoomr.fromW = 0; // onbekend dus 0

        myzoomr.fromH = Math.round((myzoomr.obj.style.height).replace("px", ""));
        if (myzoomr.fromH == "") myzoomr.fromH = 0; // onbekend dus 0

        // Als te ver weg dan stukje skippen voor X
        if (Math.abs(myzoomr.fromW - myzoomr.toW) > zoomtoFast) {
            if (myzoomr.fromW < myzoomr.toW) myzoomr.fromW = myzoomr.toW - zoomtoFast;
            if (myzoomr.fromW > myzoomr.toW) myzoomr.fromW = myzoomr.toW + zoomtoFast;
        }

        // Als te ver weg dan stukje skippen voor Y
        if (Math.abs(myzoomr.fromH - myzoomr.toH) > zoomtoFast) {
            if (myzoomr.fromH < myzoomr.toH) myzoomr.fromH = myzoomr.toH - zoomtoFast;
            if (myzoomr.fromH > myzoomr.toH) myzoomr.fromH = myzoomr.toH + zoomtoFast;
        }

        // Alleen iets doen als het nog niet gedaan is
        if (Math.round((myzoomr.obj.style.width).replace("px", "")) != myzoomr.toW || Math.round((myzoomr.obj.style.height).replace("px", "")) != myzoomr.toH) {
            // Voer het beforezoomCommand uit
            if (myzoomr.beforezoomCommand != "") eval(myzoomr.beforezoomCommand);

            zoomArray[ele] = myzoomr; // Opslaan
            dozoom(ele); // Start beweging
        }
        else {
            if (myzoomr.afterzoomCommand != "") eval(myzoomr.afterzoomCommand);
        }
    }

    myzoomr = null;
}

// Laat de zoomr een stapje bewegen en zet timeout voor de volgende stap
function dozoom(ele) {
    var myzoomr = zoomArray[ele];

    if (myzoomr != null) {
        var timespan = -1;
        var curTime = (new Date()).getTime();
        var preTime = myzoomr.curTime;
        myzoomr.curTime = curTime;
        if (preTime != -1) timespan = curTime - preTime;

        if (timespan != -1) {
            var newSpeed = ((900 / timespan) * myzoomr.speed) - 0.5;
            if (newSpeed > myzoomr.speed) newSpeed = myzoomr.speed;
            if (newSpeed < 1) newSpeed = 1;
            myzoomr.speed = newSpeed;
        }

        var xDiff = (Math.abs(myzoomr.fromW - myzoomr.toW));
        var yDiff = (Math.abs(myzoomr.fromH - myzoomr.toH));

        if ((xDiff > 3 || yDiff > 3)) {
            myzoomr.fromW += (myzoomr.toW - myzoomr.fromW) / myzoomr.speed;
            myzoomr.fromH += (myzoomr.toH - myzoomr.fromH) / myzoomr.speed;
            myzoomr.obj.style.width = Math.round(myzoomr.fromW) + 'px';
            myzoomr.obj.style.height = Math.round(myzoomr.fromH) + 'px';
            zoomArray[ele] = myzoomr;
            zoomArray[ele].timer = setTimeout("dozoom('" + ele + "')", 20);
        }
        else {          
            myzoomr.obj.style.width = myzoomr.toW + 'px';
            myzoomr.obj.style.height = myzoomr.toH + 'px';
            myzoomr.timer = clearTimeout(myzoomr.timer);
            if (myzoomr.afterzoomCommand != "") { eval(myzoomr.afterzoomCommand); } 
            zoomArray[ele] = null;
        }
    }

    myzoomr = null;
}

// ------------------------------------ ZoomClass ------------------------------------

// ------------------------------------ blendClass ------------------------------------

// Globale variabelen
var blendArray = new Array();

// Basis klasse van een blend div
function blendrClass() {
    this.obj = null; // ID van element dat blend
    this.fromB = 0; 	// Start / huidige blend
    this.toB = 0; 	// Eind blend
    this.speed = 8;     // Snelheid in x stappen bij het einde (hoe lager, hoe sneller)
    this.timer = null;  // Timerobject voor huidige blendbeweging
    this.curTime = -1;  // Tijdsduur van de laatste scrollbeweging
}

// Init blend klasse en start de beweging
function startblend(ele, fromB, toB, beforeblendCommand, afterblendCommand, blendSpeed) {
    // Lege variabelen opvangen
    if (toB == null || toB == "") toB = 0;
    if (beforeblendCommand == null) beforeblendCommand = "";
    if (afterblendCommand == null) afterblendCommand = "";

    // Init nieuwe klasse
    var myblendr = new blendrClass();
    myblendr.obj = document.getElementById(ele);
    myblendr.toB = toB;
    myblendr.fromB = fromB;
    myblendr.beforeblendCommand = beforeblendCommand;
    myblendr.afterblendCommand = afterblendCommand;

    // Speed instellen
    if (blendSpeed != null && blendSpeed != "") {
        myblendr.speed = blendSpeed;
    }

    if (myblendr.obj != null) // Bestaat de blend wel
    {
        // Haal begin pos op
        // myblendr.fromB = Math.round((myblendr.obj.style.opacity).replace("px", ""));
        if (myblendr.fromB == "") myblendr.fromB = 0; // onbekend dus 0

        // Alleen iets doen als het nog niet gedaan is
        if (Math.round(myblendr.fromB) != myblendr.toB) {
            // Voer het beforeblendCommand uit
            if (myblendr.beforeblendCommand != "") eval(myblendr.beforeblendCommand);

            blendArray[ele] = myblendr; // Opslaan
            doblend(ele); // Start beweging
        }
        else {
            if (myblendr.afterblendCommand != "") eval(myblendr.afterblendCommand);
        }
    }

    myblendr = null;
}

// Laat de blendr een stapje bewegen en zet timeout voor de volgende stap
function doblend(ele) {
    var myblendr = blendArray[ele];

    if (myblendr != null) {
        var timespan = -1;
        var curTime = (new Date()).getTime();
        var preTime = myblendr.curTime;
        myblendr.curTime = curTime;
        if (preTime != -1) timespan = curTime - preTime;

        if (timespan != -1) {
            var newSpeed = ((900 / timespan) * myblendr.speed) - 0.5;
            if (newSpeed > myblendr.speed) newSpeed = myblendr.speed;
            if (newSpeed < 1) newSpeed = 1;
            myblendr.speed = newSpeed;
        }

        var xDiff = (Math.abs(myblendr.fromB - myblendr.toB));

        if (xDiff > 3) {
            myblendr.fromB += (myblendr.toB - myblendr.fromB) / myblendr.speed;
            myblendr.obj.style.opacity = Math.round(myblendr.fromB) / 100;
            myblendr.obj.style.filter = "alpha(opacity=" + myblendr.fromB + ")";

            blendArray[ele] = myblendr;
            blendArray[ele].timer = setTimeout("doblend('" + ele + "')", 20);
        }
        else {
            myblendr.obj.style.opacity = Math.round(myblendr.toB) / 100;
            myblendr.obj.style.filter = "alpha(opacity=" + myblendr.toB + ")";
            myblendr.timer = clearTimeout(myblendr.timer);
            if (myblendr.afterblendCommand != "") eval(myblendr.afterblendCommand);
            blendArray[ele] = null;
        }
    }

    myblendr = null;
}

// ------------------------------------ blendClass ------------------------------------