

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 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: 0
        };

        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;
    }
}
