// Konstante
var Thin = 10;
var Small = 20;
var Width = 40;
var XWidth = 80;
var Left_To_Right = 1;
var Right_To_Left = -1;
var Timeout = 30;

// Globale Variablen
var Xoffset = 0;
var Yoffset = 0;
var imageWidth;
var imageHeight;

// der Pfad zu den Moverbildern

var moverBildPfad = null;


var moverData = new Array();
var IE = ((navigator.userAgent.lastIndexOf("IE") > 0) && (navigator.userAgent.lastIndexOf("Opera") < 0));

function getHandle(id) {
    if (IE) {
        return document.all[id];
    } else {
        return document.getElementById(id);
    }
}

function rePos() {
    Xoffset = 0;
    Yoffset = 0;
    element = getHandle('MoverBild');
    while (element) {
        Xoffset += element.offsetLeft;
        Yoffset += element.offsetTop;
        element = element.offsetParent;
    }
    initMover_intern(false);
}

// einen neuen mover zum moverData
// Array hinzufuegen
function addMover(i_width, i_speed, i_dir, i_pause, i_color) {
    var mover = new Array();
    mover['width'] = i_width;
    mover['drawWidth'] = 0;
    mover['speed'] = i_speed;
    mover['dir'] = i_dir;
    mover['color'] = i_color;
    mover['pause'] = i_pause;
    mover['akt_pause'] = 0;
    moverData.push(mover);
}

// die definierten mover
// als <div>'s in die Seite einfuegen
function createMover() {
    for (i = 0; i < moverData.length; i++) {
        id = 'mover' + i;
        if (IE) {
            document.write('<div id="' + id + '" style="filter:Alpha(opacity=80, finishopacity=0, style=0)"></div>');
        } else {
            document.write('<div id="' + id + '"></div>');
        }
    }
}

function moverColor(num, color) {
    moverData[num]['color'] = color;
    if (IE) {
        mover.style.backgroundColor = moverData[i]['color'];
    } else {
		if(moverBildPfad)
	        mover.style.backgroundImage = 'url(' + moverBildPfad + moverData[i]['color'] + '.png)';
		else
	        mover.style.backgroundImage = 'url(' + moverData[i]['color'] + '.png)';
    }
}

// die mover <div>'s initialisieren
function initMover_intern(setX) {
    for (i = 0; i < moverData.length; i++) {
        mover = getHandle('mover' + i);
        mover.style.position = 'absolute';
        mover.style.width = moverData[i]['width'];
        mover.style.height = imageHeight;
        moverColor(i, moverData[i]['color']);
        mover.style.top = Yoffset;
        mover.style.width = 0;
        if (setX) {
            if (moverData[i]['dir'] == Left_To_Right) {
                moverData[i]['x'] = Xoffset;
                mover.style.left = Xoffset;
            } else {
                moverData[i]['x'] = Xoffset + imageWidth;
                mover.style.left = Xoffset + imageWidth;
            }
        }
    }
}

function initMover(bildpfad) {
	moverBildPfad = bildpfad;
	
    element = getHandle('MoverBild');
    imageWidth = parseInt(element.style.width);
    imageHeight = parseInt(element.style.height);
    while (element) {
        Xoffset += element.offsetLeft;
        Yoffset += element.offsetTop;
        element = element.offsetParent;
    }
    createMover();
    initMover_intern(true); 
}

// einen mover weiterbewegen
function move(num) {
    x         = moverData[num]['x'];
    speed     = moverData[num]['speed'];
    width     = moverData[num]['width'];
    drawWidth = moverData[num]['drawWidth'];
    pause     = moverData[num]['pause'];
    akt_pause = moverData[num]['akt_pause'];
    dir       = moverData[num]['dir'];

    if (akt_pause <= 0) {
        if (dir == Left_To_Right) {                              // Links -> Rechts    
            x += speed;
            //if ((x + width - speed) >= (imageWidth + Xoffset)) { // am rechten Rand
            if ((x + width) >= (imageWidth + Xoffset)) {           // am rechten Rand 
                if ((drawWidth - speed) > 0) {                      // bis es ganz verschwindet 
                    drawWidth -= speed;
                    x = (imageWidth + Xoffset) - drawWidth;
                } else {
                    drawWidth = 0;
                    x = Xoffset;
                    akt_pause = pause;
                }
            }

            if ((x - speed) == Xoffset) {                        // am linken Rand
                if (drawWidth < width) {                         // bis es wieder ganz da ist
                    drawWidth += speed;
                    x = Xoffset;
                } else {
                    drawWidth = width;
                }
            }
        } else {                                                 // Links <- Rechts
            x -= speed;
            if (x <= Xoffset) {
                x = Xoffset;
                if (drawWidth > 0) {
                    drawWidth -= speed - (Xoffset - x);
                } else {
                    drawWidth = 0;
                    x = Xoffset + imageWidth;
                    akt_pause = pause;
                }
            } else if ((x + drawWidth + speed) == (Xoffset + imageWidth)) {
                if (drawWidth < width) {
                    drawWidth += speed;
                }
            }
        }
        } else {
            akt_pause--;
        }

        //document.getElementById('mover' + num).innerHTML = x;
        document.getElementById('mover' + num).style.left = x;
        document.getElementById('mover' + num).style.width = drawWidth;


        moverData[num]['x'] = x;
        moverData[num]['drawWidth'] = drawWidth;
        moverData[num]['akt_pause'] = akt_pause;
    }

    function runMover() {
        for (i = 0; i < moverData.length; i++) {
            move(i);
        }
        window.setTimeout("runMover()", Timeout);
    }
