/*
(C) copyright 2009 by jeff clemmer, chris sehenuk, and detour sites.

all rights reserved.

http://detoursites.com/
*/

var pulseFrames=3;
var pulseInterval=2;//seconds
var pulseType=0;//0 forward/backwards
var pulseStartFrame="";
var pulseFrameSpeed=70;//ms
var pulseId="";

//internal
var curPulseFrame=0;
var curPulseType0Dir=0;//0 for up, 1 for down
var pulseEnabled=false;
var pulseTimeout=0;

function startPulse(psf, pid, pi, pf)
{
    pulseStartFrame=psf;
    pulseId=pid;
    pulseInterval=pi;
    pulseFrames=pf;
    
    curPulseFrame=0;
    pulseEnabled=true;
    curPulseType0Dir=0;
    
    if (pulseTimeout!=0)
        clearTimeout(pulseTimeout);
    
    pulseTimeout=setTimeout(doPulse, 40);
}

function stopPulse()
{
    pulseEnabled=false;
}

function pulseOn()
{
    pulseInterval=0;
    
    if (pulseTimeout!=0)
        clearTimeout(pulseTimeout);
    
    pulseTimeout=setTimeout(doPulse, 40);
}

function pulseOff()
{
    pulseInterval=2;
}

function doPulse()
{
    if (pulseEnabled==true) {
        
        var skipped = false;
        
        if ( (curPulseFrame < pulseFrames) && (curPulseType0Dir==0) ) {
        
            curPulseFrame++;
            
            assocAnimation(pulseId, pulseStartFrame, curPulseFrame);
            
            skipped = true;
            
            pulseTimeout=setTimeout(doPulse, pulseFrameSpeed);
            
            
            
        } else if ( (curPulseFrame == pulseFrames) && (curPulseType0Dir==0) ) {
        
            curPulseType0Dir=1;
            
            skipped = true;
            
            pulseTimeout=setTimeout(doPulse, pulseFrameSpeed);
            
        }
        
        if (skipped == false) {
        
            if ( (curPulseFrame > 0) && (curPulseType0Dir==1) ) {
            
                curPulseFrame--;
                
                assocAnimation(pulseId, pulseStartFrame, curPulseFrame);
                
                pulseTimeout=setTimeout(doPulse, pulseFrameSpeed);
                
            } else if ( (curPulseFrame == 0) && (curPulseType0Dir==1) ) {
            
                curPulseType0Dir=0;
                
                pulseTimeout=setTimeout(doPulse, pulseInterval*1000);
            
            }
    
        }
        
    }
    
}

