// 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) return window[movieName];
    else return document[movieName];
  }
};

function niftyplayer(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;
}
