// Script for NiftyPlayer 1.7, by tvst from varal.org
// Released under the MIT License: http://www.opensource.org/licenses/mit-license.php

var FlashHelper =
{
    movieIsLoaded: function(theMovie) {
        if (typeof (theMovie) != "undefined") return theMovie.PercentLoaded() == 100;
        else return
        false;
    },

    getMovie: function(movieName) {
        if (navigator.appName.indexOf("Microsoft") != -1) {
//            alert(document[movieName]);
            return window[movieName];
        }else {
            return document[movieName]; 
        }
    }
};

function niftyplayer(name) {
    //alert(FlashHelper.getMovie(name));
    this.obj = FlashHelper.getMovie(name);

    if (!FlashHelper.movieIsLoaded(this.obj)) return;

    this.play = function() {
        this.obj.TCallLabel('/', 'play');
    };

    this.stop = function() {
        this.obj.TCallLabel('/', 'stop');
    };

    this.pause = function() {
        this.obj.TCallLabel('/', 'pause');
    };

    this.playToggle = function() {
        this.obj.TCallLabel('/', 'playToggle');
    };

    this.reset = function() {
        this.obj.TCallLabel('/', 'reset');
    };

    this.load = function(url) {
        this.obj.SetVariable('currentSong', url);
        this.obj.TCallLabel('/', 'load');
    };

    this.loadAndPlay = function(url) {
        this.load(url);
        this.play();
    };

    this.getState = function() {
        var ps = this.obj.GetVariable('playingState');
        var ls = this.obj.GetVariable('loadingState');

        // returns
        //   'empty' if no file is loaded
        //   'loading' if file is loading
        //   'playing' if user has pressed play AND file has loaded
        //   'stopped' if not empty and file is stopped
        //   'paused' if file is paused
        //   'finished' if file has finished playing
        //   'error' if an error occurred
        if (ps == 'playing')
            if (ls == 'loaded') return ps;
        else return ls;

        if (ps == 'stopped')
            if (ls == 'empty') return ls;
        if (ls == 'error') return ls;
        else return ps;

        return ps;

    };

    this.getPlayingState = function() {
        // returns 'playing', 'paused', 'stopped' or 'finished'
        return this.obj.GetVariable('playingState');
    };

    this.getLoadingState = function() {
        // returns 'empty', 'loading', 'loaded' or 'error'
        return this.obj.GetVariable('loadingState');
    };

    this.registerEvent = function(eventName, action) {
        // eventName is a string with one of the following values: onPlay, onStop, onPause, onError, onSongOver, onBufferingComplete, onBufferingStarted
        // action is a string with the javascript code to run.
        //
        // example: niftyplayer('niftyPlayer1').registerEvent('onPlay', 'alert("playing!")');

        this.obj.SetVariable(eventName, action);
    };

    return this;
}
