%%
%% This is file `anime_support.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% aeb_pro.dtx  (with options: `copyright,animecommon')
%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package,                                 %%
%% Copyright (C) 2006--2021  D. P. Story                %%
%%   dpstory@acrotex.net                                %%
%%                                                      %%
%% This program can redistributed and/or modified under %%
%% the terms of the LaTeX Project Public License        %%
%% Distributed from CTAN archives in directory          %%
%% macros/latex/base/lppl.txt; either version 1.2 of    %%
%% the License, or (at your option) any later version.  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\placeAnimeCtrlBtnFaces}[3][\pathToBtnCtrlIcons]{\begingroup
    \toks@={\aep@I{\aep@setAFirst}{animeFirst}%
            \aep@I{\aep@setASB}{animeSB}%
            \aep@I{\aep@setAPB}{animePB}%
            \aep@I{\aep@setAPaus}{animePause}%
            \aep@I{\aep@setAPF}{animePF}%
            \aep@I{\aep@setASF}{animeSF}%
            \aep@I{\aep@setALast}{animeLast}%
            \aep@I{\aep@setAPlus}{animePlus}%
            \aep@I{\aep@setAMinus}{animeMinus}}%
    \def\aep@I##1##2{\let##1\@empty}\the\toks@
    \def\aep@I##1##2{\edef##1{##1,\aep@thisAnime4BtnCtrl.##2}}%
    \@for\aep@thisAnime:=#3\do{\the\toks@}%
    \def\aep@I##1##2{\edef##1{\expandafter\@gobble##1}}\the\toks@
    \ifx\pathToBtnCtrlIcons\@empty
    \let\@pathsep\@empty\else\def\@pathsep{/}\fi
    \declareMultiImages{%
        {path=#1\@pathsep#2,page=0,placement={\aep@setAFirst}}
        {path=#1\@pathsep#2,page=2,placement={\aep@setASB}}
        {path=#1\@pathsep#2,page=4,placement={\aep@setAPB}}
        {path=#1\@pathsep#2,page=6,placement={\aep@setAPaus}}
        {path=#1\@pathsep#2,page=5,placement={\aep@setAPF}}
        {path=#1\@pathsep#2,page=3,placement={\aep@setASF}}
        {path=#1\@pathsep#2,page=1,placement={\aep@setALast}}
        {path=#1\@pathsep#2,page=7,placement={\aep@setAPlus}}
        {path=#1\@pathsep#2,page=8,placement={\aep@setAMinus}}
    }%
    \endgroup
}
\@onlypreamble\placeAnimeCtrlBtnFaces
\newcommand{\animeSetup}[1]{%
    \let\animeSetupPresets\@empty
    \edef\@tempExp{\noexpand\setkeys{btnAnime}{#1}}\@tempExp
    \ifx\btnAnimeCtrlBdryColor\@empty\else
    \edef\@tmpExp{\noexpand\g@addto@macro%
        \noexpand\animeSetupPresets{%
        \noexpand\BC{\btnAnimeCtrlBdryColor}}}\@tmpExp
    \edef\@tmpExp{\noexpand\g@addto@macro%
        \noexpand\animeSetupPresets{%
        \noexpand\W{\btnAnimeCtrlBdryWidth}}}\@tmpExp\fi
    \edef\@btnanimerowsep{\btnanimerowsep}%
    \setlength{\@tempdima}{%
        (\btnAnimeCtrlW+2bp)*\numWidgetsFirstRow+%
        (\btnanimebtnsep*(\numWidgetsFirstRow-1))}%
    \addtolength{\@tempdima}{\addSpaceBtwnPMBtns}%
    \edef\widthFirstRow{\the\@tempdima}%
}
\newcommand{\insertCtrlButtons}[1][c]{%
    \parbox[#1][\totalheight+2bp]{\widthFirstRow}{%
    \offinterlineskip\centering\aep@btn@anime@controls}}
\newcommand{\setspaceBtwnPMBtns}[1]{{%
    \settowidth{\@tempdima}{#1\kern2bp}%
    \xdef\tmp@spaceBtwnPMBtns{\the\@tempdima}}%
    \edef\@spaceBtwnPMBtns{\tmp@spaceBtwnPMBtns}}
\setspaceBtwnPMBtns{\space}
\def\addSpaceBtwnPMBtns{\ifKV@btnAnime@usetworows0bp\else
    \ifKV@btnAnime@nospeedcontrol0bp\else\@spaceBtwnPMBtns\fi\fi}
\define@choicekey+{btnAnime}{type}[\val\nr]%
    {loop,palindrome,stopatboundary}[stopatboundary]{%
        \edef\aebp@btnAnime@type{\nr}}{}
\define@key{btnAnime}{fieldName}[]{\gdef\animeBtnFieldName{#1}}
\define@key{btnAnime}{ocgAnimeName}[]{\gdef\animeBtnFieldName{#1}}
\define@key{btnAnime}{iconName}[]{\gdef\animeBtnBaseName{#1}}
\define@key{btnAnime}{speed}[200]{\gdef\animeBtnSpeed{#1}}
\define@key{btnAnime}{nFrames}[]{\gdef\nFrames{#1}}
\define@boolkey{btnAnime}{autorun}[true]{}
\define@boolkey{btnAnime}{autopause}[true]{}
\define@choicekey+{btnAnime}{autoplayevent}[\val\nr]%
    {pageopen,pagevisible}[pageopen]{\ifcase\nr\relax
        \def\aebp@autoplayevent{\AAPageOpen}\or
        \def\aebp@autoplayevent{\AAPageVisible}\fi}{}%
\def\aebp@autoplayevent{\AAPageOpen}
\define@choicekey+{btnAnime}{autopauseevent}[\val\nr]%
    {pageclose,pageinvisible}[pageclose]{\ifcase\nr\relax
        \def\aebp@autopauseevent{\AAPageClose}\or
        \def\aebp@autopauseevent{\AAPageInvisible}\fi}{}%
\def\aebp@autopauseevent{\AAPageClose}
\define@choicekey+{btnAnime}{poster}[\val\nr]%
    {first,last,none}[first]{\edef\aebp@btnAnime@poster{\nr}}{}
\define@key{btnAnime}{ctrlwidth}[18bp]{\def\btnAnimeCtrlW{#1}}
\define@key{btnAnime}{ctrlheight}[9bp]{\def\btnAnimeCtrlH{#1}}
\define@choicekey{btnAnime}{ctrlbdrywidth}[\val\nr]{none,%
    thin,medium,thick}[thin]{\edef\btnAnimeCtrlBdryWidth{\nr}}
\define@key{btnAnime}{ctrlbdrycolor}[]{\def\ap@argi{#1}%
    \ifx\ap@argi\@empty\let\btnAnimeCtrlBdryColor\@empty\else
    \HyColor@IfXcolor{\HyColor@XZeroOneThreeFour{#1}
        {\btnAnimeCtrlBdryColor}{}{}}
        {\edef\btnAnimeCtrlBdryColor{#1}}\fi
} % PDF color
\let\animeSetupPresets\@empty
\newcommand{\@ctrlsbtnsep}{\cgBdry[\btnanimebtnsep]}
\newcommand{\btnanimebtnsep}{1bp}
\newcommand{\vspacectrlsep}{3bp}
\newcommand{\aep@vspacectrlsep}{\vspacectrlsep}
\newcommand{\btnanimerowsep}{1bp}
\newcommand{\btnAnimeSkini}{\ifKV@btnAnime@usetworows
    \makebox[\linewidth][c]{%
    \btnAnimeGoToFirst\@ctrlsbtnsep\btnAnimeStepBack
    \@ctrlsbtnsep\btnAnimePlayBack
    \@ctrlsbtnsep\btnAnimePause
    \@ctrlsbtnsep\btnAnimePlayForward
    \@ctrlsbtnsep\btnAnimeStepForward
    \@ctrlsbtnsep\btnAnimeGoToLast}\ifKV@btnAnime@nospeedcontrol\else
    \vcgBdry[\@btnanimerowsep]\makebox[\linewidth][c]{%
    \btnAnimePlus\@ctrlsbtnsep\btnAnimeMinus}\fi\else
    \makebox[\linewidth][s]{\hss
    \btnAnimeGoToFirst
    \@ctrlsbtnsep\btnAnimeStepBack
    \@ctrlsbtnsep\btnAnimePlayBack
    \@ctrlsbtnsep\btnAnimePause
    \@ctrlsbtnsep\btnAnimePlayForward
    \@ctrlsbtnsep\btnAnimeStepForward
    \@ctrlsbtnsep\btnAnimeGoToLast
    \ifKV@btnAnime@nospeedcontrol\else
    \kern\@spaceBtwnPMBtns\btnAnimePlus
    \@ctrlsbtnsep\btnAnimeMinus\fi\hss}\fi}
\newcommand{\btnAnimeSkinii}{\ifKV@btnAnime@usetworows
    \makebox[\linewidth][c]{%
    \btnAnimeGoToFirst
    \@ctrlsbtnsep\btnAnimePlayBack
    \@ctrlsbtnsep\btnAnimePause
    \@ctrlsbtnsep\btnAnimePlayForward
    \@ctrlsbtnsep\btnAnimeGoToLast}%
    \ifKV@btnAnime@nospeedcontrol\else\vcgBdry[\@btnanimerowsep]%
    \makebox[\linewidth][c]{\btnAnimePlus\@ctrlsbtnsep
    \btnAnimeMinus}\fi\else\makebox[\linewidth][s]{\hss
    \btnAnimeGoToFirst\@ctrlsbtnsep
    \btnAnimePlayBack\@ctrlsbtnsep\btnAnimePause%
    \@ctrlsbtnsep\btnAnimePlayForward\@ctrlsbtnsep
    \btnAnimeGoToLast\ifKV@btnAnime@nospeedcontrol\else
    \kern\@spaceBtwnPMBtns\btnAnimePlus
    \@ctrlsbtnsep\btnAnimeMinus\fi\hss}\fi}
\newcommand{\btnAnimeSkiniii}{\ifKV@btnAnime@usetworows
    \makebox[\linewidth][c]{%
    \btnAnimeGoToFirst\@ctrlsbtnsep\btnAnimePause
    \@ctrlsbtnsep\btnAnimePlayForward}%
    \ifKV@btnAnime@nospeedcontrol\else
    \vcgBdry[\@btnanimerowsep]\makebox[\linewidth][c]{%
        \btnAnimePlus\@ctrlsbtnsep\btnAnimeMinus}\fi\else
    \makebox[\linewidth][s]{\hss
    \btnAnimeGoToFirst\@ctrlsbtnsep\btnAnimePause
    \@ctrlsbtnsep\btnAnimePlayForward
    \ifKV@btnAnime@nospeedcontrol\else\kern\@spaceBtwnPMBtns
    \btnAnimePlus\@ctrlsbtnsep\btnAnimeMinus\fi\hss}\fi}
\newcommand{\btnAnimeSkiniv}{%
    \makebox[\linewidth][c]{%
    \btnAnimeGoToFirst
    \@ctrlsbtnsep\btnAnimeStepBack
    \@ctrlsbtnsep\btnAnimeStepForward
    \@ctrlsbtnsep\btnAnimeGoToLast}}
\newcommand{\btnAnimeSkinv}{\PackageWarning{aeb_pro}
    {skin5 is undefined.\MessageBreak You may customize
     by defining skin5;\MessageBreak meanwhile, using default,
     skin1}\btnAnimeSkini}
\newcommand{\btnAnimeSkinvi}{\PackageWarning{aeb_pro}
    {skin6 is undefined.\MessageBreak You may customize
    by defining skin6;\MessageBreak meanwhile, using default,
     skin1}\btnAnimeSkini}
\newcommand{\aepnumWidgetsFirstRow}[2]{\def\numWidgetsFirstRow{%
    \ifKV@btnAnime@nospeedcontrol#1\else
    \ifKV@btnAnime@usetworows#1\else#2\fi\fi}}
\newcommand{\numWidgetsFirstRowV}{\aepnumWidgetsFirstRow{7}{9}}
\newcommand{\numWidgetsFirstRowVI}{\aepnumWidgetsFirstRow{7}{9}}
\define@choicekey+{btnAnime}{controls}[\val\nr]%
    {none,skin1,skin2,skin3,skin4,skin5,skin6}[skin1]{%
    \ifcase\nr\relax
        \let\aep@btn@anime@controls\@empty
        \def\widthFirstRow{0pt}\or
        \def\aep@btn@anime@controls{\btnAnimeSkini}%
            \aepnumWidgetsFirstRow{7}{9}\or
        \def\aep@btn@anime@controls{\btnAnimeSkinii}%
            \aepnumWidgetsFirstRow{5}{7}\or
        \def\aep@btn@anime@controls{\btnAnimeSkiniii}%
            \aepnumWidgetsFirstRow{3}{5}\or
        \def\aep@btn@anime@controls{\btnAnimeSkiniv}%
            \aepnumWidgetsFirstRow{4}{4}\or
        \def\aep@btn@anime@controls{\btnAnimeSkinv}%
            \numWidgetsFirstRowV\or
        \def\aep@btn@anime@controls{\btnAnimeSkinvi}%
            \numWidgetsFirstRowVI\fi
    }{}
\define@boolkey{btnAnime}{usetworows}[true]{}
\define@boolkey{btnAnime}{nospeedcontrol}[true]{}
\setkeys{btnAnime}{fieldName,iconName,speed,nFrames,type,poster,
    controls,usetworows=false,nospeedcontrol=false,ctrlwidth,ctrlheight,
    ctrlbdrywidth,ctrlbdrycolor}
\newcommand{\btnAnimePresets}[1]{\def\aeb@btnAnimePresets{#1}}
\def\aeb@btnAnimePresets{}
\newcommand{\ctrlButtonsWrapper}[1]{#1}
\newcommand{\btnAnimeCtrlPresets}[1]{\def\aeb@btnAnimeCtrlPresets{#1}}
\def\aeb@btnAnimeCtrlPresets{}
\newcommand{\btnAnimeGoToFirst}{%
    \pushButton[\TU{Go to first frame}\S{S}\BC{}
        \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
        \presets{\animeSetupPresets}\A{\JS{\btnAnimeFirstAction}}]%
        {\animeBtnFieldName4BtnCtrl.animeFirst}%
        {\btnAnimeCtrlW}{\btnAnimeCtrlH}}%
\newcommand{\btnAnimeStepBack}{%
    \pushButton[\TU{Step Back}\S{S}\BC{}
        \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
        \presets{\animeSetupPresets}\A{\JS{\btnAnimeSBAction}}]%
        {\animeBtnFieldName4BtnCtrl.animeSB}%
        {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
\newcommand{\btnAnimePlayBack}{%
    \pushButton[\TU{Play Backwards}\S{S}\BC{}
        \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
        \presets{\animeSetupPresets}\A{\JS{\btnAnimePBAction}}]%
        {\animeBtnFieldName4BtnCtrl.animePB}%
        {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
\newcommand{\btnAnimePause}{%
    \pushButton[\TU{Pause}\S{S}\BC{}
        \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
        \presets{\animeSetupPresets}\A{\JS{\btnAnimePauseAction}}]%
        {\animeBtnFieldName4BtnCtrl.animePause}%
        {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
\newcommand{\btnAnimePlayForward}{%
    \pushButton[\TU{Play Forwards}\S{S}\BC{}
        \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
        \presets{\animeSetupPresets}\A{\JS{\btnAnimePFAction}}]%
        {\animeBtnFieldName4BtnCtrl.animePF}%
        {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
\newcommand{\btnAnimeStepForward}{%
    \pushButton[\TU{Step Forward}\S{S}\BC{}
        \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
        \presets{\animeSetupPresets}\A{\JS{\btnAnimeSFAction}}]%
        {\animeBtnFieldName4BtnCtrl.animeSF}%
        {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
\newcommand{\btnAnimeGoToLast}{%
    \pushButton[\TU{Go to last frame}\S{S}\BC{}
        \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
        \presets{\animeSetupPresets}\A{\JS{\btnAnimeLastAction}}]%
        {\animeBtnFieldName4BtnCtrl.animeLast}%
        {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
\newcommand{\btnAnimePlus}{%
    \pushButton[\TU{Increase speed\r Shift-click to restore
        default speed}%\textFont{HeBo}\CA{+}
        \S{S}\BC{}\FB{false}\I{null}\TP{1}
        \presets{\aeb@btnAnimeCtrlPresets}
        \presets{\animeSetupPresets}\A{\JS{\btnAnimePlusAction}}]%
        {\animeBtnFieldName4BtnCtrl.animePlus}%
        {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
\newcommand{\btnAnimeMinus}{%
    \pushButton[\TU{Decrease speed\r Shift-click to restore
        default speed}%\textFont{HeBo}\uCA{FEFF2212}
        \S{S}\BC{}\FB{false}\I{null}\TP{1}
        \presets{\aeb@btnAnimeCtrlPresets}
        \presets{\animeSetupPresets}\A{\JS{\btnAnimeMinusAction}}]%
        {\animeBtnFieldName4BtnCtrl.animeMinus}%
        {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
\newcommand{\btnAnimeFirstAction}{%
if (typeof \animeBtnFieldName\space == "object")\r\t
        btnAnimeFirst(\animeBtnFieldName);
}
\newcommand{\btnAnimeSBAction}{%
    if ( typeof \animeBtnFieldName\space=="undefined")\r\t
        var \animeBtnFieldName= new Object();\r
        btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
            "\animeBtnBaseName",\animeBtnSpeed,\nFrames,false,%
            \aebp@btnAnime@type,true);
}
\newcommand{\btnAnimePBAction}{%
    if ( typeof \animeBtnFieldName\space=="undefined")\r\t
        var \animeBtnFieldName= new Object();\r
        btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
            "\animeBtnBaseName",\animeBtnSpeed,\nFrames,false,%
            \aebp@btnAnime@type,false);
}
\newcommand{\btnAnimePauseAction}{%
    if ((typeof \animeBtnFieldName\space == "object")&&%
        \animeBtnFieldName.animeStart)\r\t
        btnAnimePause(\animeBtnFieldName);
}
\newcommand{\btnAnimePFAction}{%
    if ( typeof \animeBtnFieldName\space=="undefined")\r\t
        var \animeBtnFieldName= new Object();\r
    btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
        "\animeBtnBaseName",\animeBtnSpeed,\nFrames,true,%
        \aebp@btnAnime@type,false);
}
\newcommand{\btnAnimeSFAction}{%
    if ( typeof \animeBtnFieldName\space=="undefined")\r\t
        var \animeBtnFieldName= new Object();\r
    btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
        "\animeBtnBaseName",\animeBtnSpeed,\nFrames,true,%
        \aebp@btnAnime@type,true);
}
\newcommand{\btnAnimeLastAction}{%
    if (typeof \animeBtnFieldName\space == "object")\r\t
            btnAnimeLast(\animeBtnFieldName);
}
\newcommand{\btnAnimePlusAction}{%
    if (typeof \animeBtnFieldName\space == "object")\r\t
            btnAnimePlus(\animeBtnFieldName,\animeBtnSpeed);
}
\newcommand{\btnAnimeMinusAction}{%
    if (typeof \animeBtnFieldName\space == "object")\r\t
            btnAnimeMinus(\animeBtnFieldName,\animeBtnSpeed);
}
\begin{insDLJS}[_loadBtnAnimeCtrls]{btnanime}
    {AeB Pro: Button and Ocg Anime Controls}
var _loadBtnAnimeCtrls=true;
var activeAnimes=new Array();
function btnAnimePlay(oAnime,fieldName,baseFrameName,%
nSpeed,nFrames,bForward,type,bStep) {
    // ocgAnime is characterized by baseFrameName=""
    if ( oAnime.animeStart && !oAnime.animePause ) return;
    var callingFieldName=event.target.name;
    var re=/\.anime(PB|PF)/;
    var doRebuild=( event.shift && re.test(callingFieldName) );
    if ( (arguments.length>1) && %
( (typeof activeAnimes[fieldName] == "undefined")|| doRebuild) ) {
        activeAnimes[fieldName]=oAnime;
        oAnime.isOcgAnime=(baseFrameName==""); // ocg change
        oAnime.fieldName=fieldName;
        oAnime.baseFrameName=baseFrameName;
        oAnime.numSecs=nSpeed;
        oAnime.nFrames=nFrames;
        oAnime.type=type;
        oAnime.bStep=bStep;
        oAnime.aMyIcons = new Array();
        oAnime.count = 0;
        if ( !oAnime.isOcgAnime ) {// ocg change
            for ( var i=0; i < nFrames; i++) {
                oAnime.aMyIcons[i] = this.getField(fieldName+"."+i);
                oAnime.aMyIcons[i].display=(i==0)?display.visible:%
display.hidden;
            }
        }
    }
    if (arguments.length>1) {
        oAnime.bForward=bForward;
        oAnime.bStep=bStep;
    }
    if (oAnime.bStep) {
        this.delay=true
        if ( oAnime.isOcgAnime ) // ocg change
            getxBld("anime!!"+oAnime.fieldName+"\#"%
+(oAnime.count+1)).state=false; // ocg
        else
            oAnime.aMyIcons[oAnime.count].display=display.hidden;
        var currCount=oAnime.count;
        if (oAnime.bForward) {
                oAnime.count++;
                if (oAnime.count==oAnime.nFrames) // hit upper boundary
                    oAnime.count=(oAnime.type==0)?0:currCount;
        } else {
            oAnime.count--;
            if (oAnime.count<0)
                oAnime.count=(oAnime.type==0)?(oAnime.nFrames-1):0;
        }
        if ( oAnime.isOcgAnime ) // ocg change
            getxBld("anime!!"+oAnime.fieldName+"\#"%
+(oAnime.count+1)).state=true; // ocg
        else
            oAnime.aMyIcons[oAnime.count].display=display.visible;
        this.delay=false;
    } else {
        var args="\""+oAnime.fieldName+"\","+oAnime.type;
        oAnime.run = app.setInterval(%
"btnAnimeNewFrame("+args+")",oAnime.numSecs);
        oAnime.animeStart=true;
        oAnime.animePause=false;
    }
}
function btnAnimeFirst(oAnime)
{
    try { app.clearInterval(oAnime.run);} catch(e){}
    oAnime.animeStart=false;
    oAnime.animePause=false;
    if ( oAnime.isOcgAnime )
        getxBld("anime!!"+oAnime.fieldName+"\#"%
+(oAnime.count+1)).state=false; // ocg
    else
        oAnime.aMyIcons[oAnime.count].display=display.hidden;
    oAnime.count=0;
    if ( oAnime.isOcgAnime )
        getxBld("anime!!"+oAnime.fieldName+"\#"%
+(oAnime.count+1)).state=true; // ocg
    else
        oAnime.aMyIcons[0].display=display.visible;
}
function btnAnimeLast(oAnime)
{
    try { app.clearInterval(oAnime.run);} catch(e){}
    oAnime.animeStart=false;
    oAnime.animePause=false;
    var l = oAnime.nFrames-1;
    if ( oAnime.isOcgAnime )
            getxBld("anime!!"+oAnime.fieldName+"\#"%
+(oAnime.count+1)).state=false; // ocg
    else
        oAnime.aMyIcons[oAnime.count].display=display.hidden;
    oAnime.count=l;
    if ( oAnime.isOcgAnime )
            getxBld("anime!!"+oAnime.fieldName+"\#"%
+(l+1)).state=true; // ocg
    else
        oAnime.aMyIcons[l].display=display.visible;
}
function btnAnimePause(oAnime)
{
    try { app.clearInterval(oAnime.run);} catch(e){}
    oAnime.animePause=true;
}
function btnAnimePlus(oAnime,nDefSpeed){
    var isPlaying=(oAnime.animeStart&&!oAnime.animePause);
    if (isPlaying) btnAnimePause(oAnime);
    if ( event.shift ) oAnime.numSecs=nDefSpeed;
    else oAnime.numSecs -= 50;
    if (oAnime.numSecs<10) oAnime.numSecs=10
    if (isPlaying) btnAnimePlay(oAnime);
}
function btnAnimeMinus(oAnime,nDefSpeed){
    var isPlaying=(oAnime.animeStart&&!oAnime.animePause);
    if (isPlaying) btnAnimePause(oAnime);
    if ( event.shift ) oAnime.numSecs=nDefSpeed;
    else oAnime.numSecs += 50;
    if (isPlaying) btnAnimePlay(oAnime);
}
function btnAnimeNewFrame(fieldName, type)
{
    var oAnime=activeAnimes[fieldName];
    this.delay=true
    if ( oAnime.isOcgAnime ) // ocg change
        getxBld("anime!!"+oAnime.fieldName+"\#"%
+(oAnime.count+1)).state=false;
    else
        oAnime.aMyIcons[oAnime.count].display=display.hidden;
    var currCount=oAnime.count;
    var bBdaryMet=false;
    if (oAnime.bForward) {
        oAnime.count++;
        if (oAnime.count==oAnime.nFrames) {
            if(type==0) oAnime.count \%= oAnime.nFrames;
            else if(type==1) {
                    oAnime.count=currCount;
                    oAnime.count--;
                    oAnime.bForward=false;
                } else {
                    bBdaryMet=true;
                    oAnime.count=currCount;
                }
        }
    } else {
        oAnime.count--;
        if (oAnime.count<0) {
            if(type==0) oAnime.count=(oAnime.nFrames-1);
            else if(type==1) {
                    oAnime.count=currCount;
                    oAnime.count++;
                    oAnime.bForward=true;
                } else { // stop
                    bBdaryMet=true;
                    oAnime.count=currCount;
                }
        }
    }
    if ( oAnime.isOcgAnime) // ocg change
        getxBld("anime!!"+oAnime.fieldName+"\#"%
+(oAnime.count+1)).state=true;
    else
        oAnime.aMyIcons[oAnime.count].display=display.visible;
    this.delay=false;
    if ( type==2 && bBdaryMet ) {
        try { app.clearInterval(oAnime.run);} catch(e){}
        // try { app.clearTimeOut(timeout);} catch(e){}
        oAnime.animeStart=false;
        oAnime.animePause=false;
    }
}
\end{insDLJS}
\endinput
%%
%% End of file `anime_support.def'.
