﻿/* Written by Greg Thatcher, http://www.GregThatcher.com */
    /* Channel, Cast Member, Cast Member, Top, Left, Bottom, Right */
    var theirChannelIndex = 0;
    var theirCastMemberNumberIndex = 1;
    var theirCastMemberNameIndex = 2;
    var theirTopIndex = 3;
    var theirLeftIndex = 4;
    var theirBottomIndex = 5;
    var theirRightIndex = 6;

    var channelOffsets =
 [
    [-1 , 0 , 0],
    [-1 , 0 , 0],
    [-1 , 0 , 0],
    [-1 , 0 , 0],
    [-1 , 0 , 0],
    [-1 , 0 , 0],
    [-1 , 0 , 0],
    [-1 , 0 , 0],
    [-1 , 0 , 0],
    [-1 , 0 , 0],
 ];
    
    

function clearChannelOffsets ()
{
    var index;
    for (index in channelOffsets)
    {
        channelOffsets[index][0] = -1;
    }
}
function AddChannelOffset (channel, xOffset, yOffset)
{
    var index;
    for (index in channelOffsets)
    {
        if (channelOffsets[index][0] == -1)
        {
            channelOffsets[index][0] = channel;
            channelOffsets[index][1] = xOffset;
            channelOffsets[index][2] = yOffset;            
            return;
        }
    }
}
function CheckChannelXOffset(channel)
{
    var xOffset = 0;
    var index;
    for (index in channelOffsets)
    {
        if (channelOffsets[index][0] == channel)
        {
            return channelOffsets[index][1];
        }
    }
    
    return xOffset;
}
function CheckChannelYOffset(channel)
{
    var yOffset = 0;
    var index;
    for (index in channelOffsets)
    {
        if (channelOffsets[index][0] == channel)
        {
            return channelOffsets[index][2];
        }
    }
    return yOffset;
}

var theirImages = new Object();
function GetCachedImage(url)
{
    if (theirImages[url] == null)
    {
        theirImages[url] = new Image();
        theirImages[url].src = url;
    }
    return theirImages[url].src;
    
}
var theCurrentStage = 2;

function GetSpriteByIndex (index)
{
    var sprite;
    
    if (theCurrentStage == 1)
    {
        sprite = document.getElementById("sprite" + index);
    }
    else
    {
        sprite = document.getElementById("sprite2_" + index);
    }
    
    return sprite;
}

function showFrame (frame, xOffset, yOffset)
{
    var currentSprite = 0;
    if (theCurrentStage == 1)
    {
        theCurrentStage = 2;
    }
    else
    {
        theCurrentStage = 1;
    }

    
    xOffset = (xOffset == null) ? 0 : xOffset;
    yOffset = (yOffset == null) ? 0 : yOffset;
        
    var currentFrameArray = animation[frame];
    for (channel in currentFrameArray)
    {
        var sprite;
        sprite = GetSpriteByIndex(currentSprite);
        // anti-bugging
        if (currentFrameArray[channel] == null)
        {
            return;
        }
        var newImage = currentFrameArray[channel][theirCastMemberNameIndex] + '.gif';
        var newHTML = '<img src="' + GetCachedImage(theArtDirectory + newImage) + '" alt=""  />';
        var oldInnerText = sprite.innerHTML;
        if (oldInnerText.indexOf(newImage) < 0)
        {
            sprite.innerHTML = newHTML;
        }
        sprite.style.visibility = "visible";
        var newTop =  currentFrameArray[channel][theirTopIndex]  + yOffset  + CheckChannelYOffset(currentFrameArray[channel][theirChannelIndex]);
        var newLeft = currentFrameArray[channel][theirLeftIndex] + xOffset  + CheckChannelXOffset(currentFrameArray[channel][theirChannelIndex]);
        sprite.style.top =  newTop + "px";
        sprite.style.left =  newLeft + "px";
        sprite.style.zIndex = currentFrameArray[channel][theirChannelIndex] + 200;
        currentSprite++;
    }

    for (; currentSprite < theMaxNumSprites; currentSprite++)
    {
        var sprite = GetSpriteByIndex(currentSprite);

        sprite.innerHTML = '';
        sprite.style.visibility = "hidden";
    }

    // we set channel offsets before calling showFrame, and then reset when done
    clearChannelOffsets ();

    var stage1 = document.getElementById("stage_1");
    var stage2 = document.getElementById("stage_2");

    if (theCurrentStage == 1)
    {
        stage1.style.zIndex = 10;
        //stage1.style.visibility = "visible";
        stage2.style.zIndex = 5;
        //stage2.style.visibility = "hidden";
        
    }
    else
    {
        stage2.style.zIndex = 10;
        //stage2.style.visibility = "visible";
        stage1.style.zIndex = 5;
        //stage1.style.visibility = "hidden";
        
    }
    /*
        stage1.zIndex = 5;
        stage2.zIndex = 10;
        theCurrentStage = 2;
    */
}    

function showFrames (currentFrame, endFrame, speed)
{
    if (currentFrame <= endFrame)
    {
        
        showFrame(currentFrame);
        currentFrame++;
        var functionCall = "showFrames(" + currentFrame + "," + endFrame+ "," + speed  + ")";
        // alert (functionCall);
        setTimeout(functionCall, speed);
    }
}




