function rotationEngineStartup(tp, wp) {

    rotationEngineStartup._THUMBS = {};

    if (window['rotationEngineWaitPeriod']) {

        rotationEngineStartup._ROTATION_PERIOD_MS = window['rotationEngineWaitPeriod'] * 1000;

    } else {

        rotationEngineStartup._ROTATION_PERIOD_MS = wp * 1000;

    }

    rotationEngineStartup._ROTATION_ID = null;

    rotationEngineStartup._ROTATION_UID = null;

    rotationEngineStartup._DUMMY = tp;

}



function rotationStop(image) {

    if (rotationEngineStartup._ROTATION_ID) {

        var thumbData = rotationEngineStartup._THUMBS[rotationEngineStartup._ROTATION_ID];

        if (thumbData && thumbData['thumb'] && thumbData['thumbInitial']) {

            thumbData['thumb'].src = thumbData['thumbInitial'];

        }

    }

    rotationEngineStartup._ROTATION_ID = null;

    rotationEngineStartup._ROTATION_UID = null;

    rotationEngineStartup._DUMMY = image;

}



function rotationStart(image, urlPrefix, thumbCount, thumbExt) {

    rotationStop();


    if (image) {

        var currentThumbUrl = image.src;

        var currentThumbIndex = 1;

        for (var i = 1; i < thumbCount; i++) {

            var url = urlPrefix + i + (thumbExt ? thumbExt : '.jpg');

            if (currentThumbUrl.indexOf(url) == currentThumbUrl.length - url.length) {

                currentThumbIndex = i;

            }

        }



        var thumbId = image.id;

        if (!thumbId) {

            thumbId = 'rotationEngineStartup_' + new Date().getTime();

            image.id = thumbId

        }

        rotationEngineStartup._THUMBS[thumbId] = {

            thumb: image,

            thumbInitial: currentThumbUrl,

            prefix: urlPrefix,

            count: thumbCount,

            ext: thumbExt,

            idx: currentThumbIndex

        };



        if (rotationEngineStartup._THUMBS[thumbId]['thumb']) {

            rotationEngineStartup._ROTATION_UID = new Date().getTime();

            rotationEngineStartup._ROTATION_ID = thumbId;

            rotationInvoke(thumbId, rotationEngineStartup._ROTATION_UID);

        }

    }

}



function rotationInvoke(thumbId, uid) {

    var thumbData = rotationEngineStartup._THUMBS[thumbId];

    if (thumbData) {

        var thumb = thumbData['thumb'];

        var prefix = thumbData['prefix'];

        var count = thumbData['count'];

        var ext = thumbData['ext'];

        var idx = thumbData['idx'];


        idx = (idx == count ? 1 : idx + 1);

        thumbData['idx'] = idx;



        var url = prefix + idx + (ext ? ext : '.jpg');

        var img = new Image();

        img.onload = function() {

            if ((thumbId == rotationEngineStartup._ROTATION_ID) && (uid == rotationEngineStartup._ROTATION_UID)) {

                if (img.width == 0) {

                    rotationInvoke(thumbId, uid);

                }

                thumb.src = url;

                setTimeout('rotationInvoke(\'' + thumbId + '\', ' + uid + ')', rotationEngineStartup._ROTATION_PERIOD_MS);

            }

        }

        img.onerror = function() {

            if ((thumbId == rotationEngineStartup._ROTATION_ID) && (uid == rotationEngineStartup._ROTATION_UID)) {

                rotationInvoke(thumbId, uid);

            }

        }

        img.src = url;

        rotationEngineStartup._THUMBS[thumbId] = thumbData;

    }

}

