// Make the flying saucer fly
function Time_Play(name)
{
    var tm, bar, layer, prop_tbl, prop_name, prop_value, n_bar, n_prop;
    var frame, nkeyfrm, startfrm, endfrm, f, kf, i, j;
    var ns = navigator.appName == "Mozilla";

    if (document.Time == null)              Time_Init();
    if ((tm = document.Time[name]) == null) return;
    if (tm.pause) 								 return;

    frame = ++tm.curframe;
    if (frame > tm.lastframe) {
        tm.curframe = 0;
        if (!tm.loop) return;
        frame = ++tm.curframe;
    }

    n_bar = tm.length;
    for (i=0; i < n_bar; i++) {
        bar = tm[i];
        if (bar == null) continue;

        nkeyfrm  = bar.keyframes.length;
        startfrm = bar.keyframes[0];
        endfrm   = bar.keyframes[nkeyfrm-1];
        if (frame < startfrm || frame > endfrm) continue;
        f        = frame - startfrm;
        for (kf=j=0; j < bar.keyframes.length && bar.keyframes[j] <= frame; kf = j++) ;

        if (bar.props == null) continue;
        n_prop    = bar.props.length;

        layer = bar.layer;
        if (layer == null) continue;

        for (j=0; j < n_prop; j++) {
             prop_tbl   = bar.props[j];
             prop_name  = prop_tbl.prop;

             prop_value = prop_tbl[(bar.keyframes.length < prop_tbl.length) ? f : kf];
             if (ns) layer[prop_name]       = prop_value;
             else    layer.style[prop_name] = prop_value;
        }
    }

    if (tm.actions) {
        for (i=0; i < tm.actions[1].length && tm.actions[0][i] <= frame; i++)
            if (tm.actions[0][i] == frame) eval(tm.actions[1][i]);
    }

    setTimeout('Time_Play("' + name + '")', tm.delay);
}

function Time_Init()
{
    var tm, bar, handlers;
    var is_netscape = navigator.appName == "Netscape";

    document.Time = new Array(1);
    document.Time[0] = new Array(1);
    tm = document.Time[0];
    document.Time["timeline1"] = tm;
    tm.name = "timeline1";
    tm.fps = 10;

    document.Time[0][0] = new String("data");
    bar = document.Time[0][0];
    bar.track = 1;
    if (is_netscape)
        bar.layer = document["layer1"];
    else
        bar.layer = document.all ? document.all["layer1"] : null;
    bar.keyframes = new Array(1, 8, 16, 30, 40);
    bar.props = new Array(6);
    bar.props[0] = new Array(24,88,186,301,419,522,596,625,599,532,436,326,217,123,59,38,50,80,123,178,241,310,381,452,520,582,635,676,703,713,696,652,587,506,415,321,230,148,80,34);
    bar.props[0].prop = "left";
    bar.props[1] = new Array(401,391,377,361,343,325,308,293,281,269,259,248,238,227,217,206,199,192,185,179,172,165,158,151,144,137,130,123,116,110,100,90,79,69,59,49,40,32,25,20);
    bar.props[1].prop = "top";
    bar.props[2] = new Array(127,127,127,127,127);
    bar.props[2].prop = "width";
    bar.props[3] = new Array(61,61,61,61,61);
    bar.props[3].prop = "height";
    bar.props[4] = new Array(1,1,1,1,1);
    bar.props[4].prop = "zIndex";
    bar.props[5] = new Array("inherit","inherit","inherit","inherit","inherit");
    bar.props[5].prop = "visibility";
    tm.lastframe = 40;
    tm.curframe = 0;
    tm.delay = 1000 / tm.fps;
    tm.loop = false;
}

