var IMAGE_ID_PREFIX = "randImg_";
var LINK_ID_PREFIX = "randImg_Link_";
var TOTAL_IMAGES_TO_ROTATE = 3;

var rotatedImagesCountdown = TOTAL_IMAGES_TO_ROTATE;
var actualImageToRotateObj;
var backOrFrontPostfix = "f";

var tmpImage = new Image();

var imagesDisplayed = new Array();
var imagesToDisplay = new Array();

imagesToDisplay[0] = ["projekte/Eiszeit/random/01.jpg","projekte/Eiszeit"];
imagesToDisplay[1] = ["projekte/Eiszeit/random/02.jpg","projekte/Eiszeit"];
imagesToDisplay[2] = ["projekte/Eiszeit/random/03.jpg","projekte/Eiszeit"];
imagesToDisplay[3] = ["projekte/Eiszeit/random/04.jpg","projekte/Eiszeit"];
imagesToDisplay[4] = ["projekte/Eiszeit/random/05.jpg","projekte/Eiszeit"];
imagesToDisplay[5] = ["projekte/Eiszeit/random/06.jpg","projekte/Eiszeit"];
imagesToDisplay[6] = ["projekte/Globalisierung/random/01.jpg","projekte/Globalisierung"];
imagesToDisplay[7] = ["projekte/Humboldt/random/01.jpg","projekte/Humboldt"];
imagesToDisplay[8] = ["projekte/Humboldt/random/02.jpg","projekte/Humboldt"];
imagesToDisplay[9] = ["projekte/Humboldt/random/03.jpg","projekte/Humboldt"];
imagesToDisplay[10] = ["projekte/Humboldt/random/04.jpg","projekte/Humboldt"];
imagesToDisplay[11] = ["projekte/Humboldt/random/05.jpg","projekte/Humboldt"];
imagesToDisplay[12] = ["projekte/Humboldt/random/06.jpg","projekte/Humboldt"];
imagesToDisplay[13] = ["projekte/Klima/random/01.jpg","projekte/Klima"];
imagesToDisplay[14] = ["projekte/Klima/random/02.jpg","projekte/Klima"];
imagesToDisplay[15] = ["projekte/Klima/random/03.jpg","projekte/Klima"];
imagesToDisplay[16] = ["projekte/Klima/random/04.jpg","projekte/Klima"];
imagesToDisplay[17] = ["projekte/Lawrence/random/01.jpg","projekte/Lawrence"];
imagesToDisplay[18] = ["projekte/Lawrence/random/02.jpg","projekte/Lawrence"];
imagesToDisplay[19] = ["projekte/Lawrence/random/03.jpg","projekte/Lawrence"];
imagesToDisplay[20] = ["projekte/Lawrence/random/04.jpg","projekte/Lawrence"];
imagesToDisplay[21] = ["projekte/Lawrence/random/05.jpg","projekte/Lawrence"];
imagesToDisplay[22] = ["projekte/Skythen/random/01.jpg","projekte/Skythen"];
imagesToDisplay[23] = ["projekte/Skythen/random/02.jpg","projekte/Skythen"];
imagesToDisplay[24] = ["projekte/Skythen/random/03.jpg","projekte/Skythen"];
imagesToDisplay[25] = ["projekte/Skythen/random/04.jpg","projekte/Skythen"];
imagesToDisplay[26] = ["projekte/Skythen/random/05.jpg","projekte/Skythen"];
imagesToDisplay[27] = ["projekte/Skythen/random/06.jpg","projekte/Skythen"];
imagesToDisplay[28] = ["projekte/Skythen/random/07.jpg","projekte/Skythen"];
imagesToDisplay[29] = ["projekte/Konzepte/random/01.jpg","projekte/Konzepte"];
imagesToDisplay[30] = ["projekte/Konzepte/random/02.jpg","projekte/Konzepte"];
imagesToDisplay[31] = ["projekte/Konzepte/random/03.jpg","projekte/Konzepte"];
imagesToDisplay[32] = ["projekte/Konzepte/random/04.jpg","projekte/Konzepte"];
imagesToDisplay[33] = ["projekte/Globalisierung/random/02.jpg","projekte/Konzepte"];
imagesToDisplay[34] = ["projekte/Skythen/random/08.jpg","projekte/Konzepte"];
imagesToDisplay[35] = ["projekte/Lawrence/random/06.jpg","projekte/Konzepte"];



function getRandomImageIndex() {
    if ( imagesToDisplay.length == 0 ) {
        for ( var displayedIndex = 0; displayedIndex < imagesDisplayed.length; displayedIndex++ ) {
            imagesToDisplay.push( imagesDisplayed[displayedIndex] );
        }
        imagesDisplayed = new Array();
    }

    return Math.floor( Math.random() * (imagesToDisplay.length) );
}


function getImagesToRotateDisplayIndex() {
    // returns for example Math.abs( (9 % 10) - 10 ) = 1.
    return Math.abs( (rotatedImagesCountdown % (TOTAL_IMAGES_TO_ROTATE + 1) ) - (TOTAL_IMAGES_TO_ROTATE + 1) );

}

function htmlIdOfImageToRotate() {
    return IMAGE_ID_PREFIX + getImagesToRotateDisplayIndex().toString();
}
function htmlIdOfLinkToRotate() {
    return LINK_ID_PREFIX + getImagesToRotateDisplayIndex().toString();
}

function rotateImages() {
    if ( rotatedImagesCountdown > 0 ) {
        var i = getRandomImageIndex();
        actualImageToRotateObj = imagesToDisplay.splice( i, 1 )[0];
        imagesDisplayed.push( actualImageToRotateObj );

        var imageId = htmlIdOfImageToRotate();
        $( tmpImage ).attr( "src", "" ); // Hack for browser compatibility
        $( tmpImage ).bind( "load", function() {

            rotatedImagesCountdown = (rotatedImagesCountdown - 1) % 10;
            var linkId = htmlIdOfLinkToRotate();
            $( "#" + linkId ).attr( "href", actualImageToRotateObj[1] );
            $( tmpImage ).unbind( "load" );
            $( "#" + imageId  + backOrFrontPostfix ).attr( "src", actualImageToRotateObj[0] );

            if ( backOrFrontPostfix == "f" ) { // fade front image in
                $( "#" + imageId  + "f" ).fadeIn( 500, function() {
                    rotateImages(); //Nacheinander
                } );
            }
            else if ( backOrFrontPostfix == "b" ) {  // fade front image out
                $( "#" + imageId  + "f" ).fadeOut( 500, function() {
                    rotateImages(); //Nacheinander
                } );
            }

            //rotateImages(); // Parallel
        } );

        $( tmpImage ).attr( "src", actualImageToRotateObj[0] );
    }
    else {
        backOrFrontPostfix = (backOrFrontPostfix == "f") ? backOrFrontPostfix = "b" : "f";
        rotatedImagesCountdown = TOTAL_IMAGES_TO_ROTATE;
        setTimeout( "rotateImages()", 2000 );
    }
}
