/*
 * contentLayer = new Layer_Ref("content");
 * Effect       = new Effect(contentLayer);
 * Effect.setFade("fadeOut", 50);
 * Effect.setFade("fadeIn", 2000);
 * Effect.setFade("fadeOut", 800);
 * Effect.setFade("fadeIn", 50);
 * Effect.setResize(contentLayer.getCanvas(), new Canvas(400, 350), 5000);
 *
 * Effect.play();
 *
 *
 */

function Effect(eLayer) {
	var _eLayer         = eLayer;
	var _tLine          = new Time_Line();
	var _fPosResizeEnd  = 0;
    var _fPosFadeEnd    = 0;

	this.setFade = function (/* String */ eMode, /* Integer */ eDuration) {
	    var mode  = (eMode == "fadeIn") ? "0+" : "1-";
	    for (var f=Math.floor(Math.sqrt(eDuration)), i=0; f>0; f--, i++) {
			_tLine.setFrame(_fPosFadeEnd+i, _eLayer, "setOpacity", ["'" + eval(mode + (Math.round((1/f)/0.01)*0.01)) + "'"] );
		}
		_fPosFadeEnd += i;
	}

    // Nähert die Startmaße linear den Endmaßen an
	this.setResize = function (/* Object */ eStartSize, /* Object */ eEndSize, /* Integer */ eDuration) {
		var fMax       = Math.floor(Math.sqrt(eDuration));
        var diffWidth  = eEndSize.width  - eStartSize.width;
		var diffHeight = eEndSize.height - eStartSize.height;
        for (var f=fMax, i=1; i<=fMax; i++) {
			_tLine.setFrame(_fPosResizeEnd+i, _eLayer, "setCanvas",
			    [new Canvas(eStartSize.width  + ((diffWidth  / fMax) * i),
			                eStartSize.height + ((diffHeight / fMax) * i))] );
		}
		_fPosResizeEnd += i;
	}

	this.play = function () {
	    _tLine.setFPS(25);
		_tLine.play();
	}
}
