/**********
     TITLE: Music Object Extension - Quick Clip
   VERSION: 1.1.0 revised 5/3 for VAST
    AUTHOR: Chris van Rensburg & Chris Ticknor
 COPYRIGHT: 1996-1999 Beatnik, Inc. All Rights Reserved
  REQUIRES: music-object.js (3.2.0 or higher)
**********/

function mo_QuickClip_songLoaded () {
	with (this) {
		loaded = true;
		if (typeof (document.images [objectName + 'PreviewButton']) != 'undefined') {
			document.images [objectName + 'PreviewButton'].src = Music.QuickClip.imagePath + 'preview-ready.gif';
		}
	}
}

function mo_QuickClip_loadSong () {
	with (this) {
		musicObject.setAutostart (false);
		musicObject.onLoad (objectName + '.songLoaded ()');
		musicObject.play (songURL);
	}
} 

function mo_QuickClip_play (loop) {
with (this) {
		if (loaded) {
			if ((Music.QuickClip.lastInstance != null) && (Music.QuickClip.lastInstance != this)) {
				Music.QuickClip.lastInstance.musicObject.stop (500);
			}
			Music.QuickClip.lastInstance = this;
			musicObject.play (loop);
		}
	}
}

function mo_QuickClip_stop () {
	with (this) {
		if (loaded) musicObject.stop (Music.QuickClip.fadeOutTime);
	}
}

function mo_QuickClip_createPreviewButton () {
	with (this) {
		document.writeln ('<A HREF="javascript://" ONCLICK="Music.engageAudio (true); ' + objectName + '.play (); return false"><IMG SRC="' + Music.QuickClip.imagePath + 'not-ready.gif" NAME="' + objectName + 'PreviewButton" BORDER=0 align=bottom></A>');
	}
}

function mo_QuickClip (songURL) {
	/*** Public Instance Properties ***/
	this.songURL = songURL;

	/*** Public Instance Methods ***/
	this.createPreviewButton = mo_QuickClip_createPreviewButton;
	this.play = mo_QuickClip_play;
	this.stop = mo_QuickClip_stop;

	/*** Private Instance Methods ***/
	this.loadSong = mo_QuickClip_loadSong;
	this.songLoaded = mo_QuickClip_songLoaded;

	/*** Private Instance Properties ***/
	this.objectName = 'mo_QuickClip_GIN' + Music.QuickClip.GINs++;
	this.loaded = false;

	/*** Initialization ***/
	if (Music.hasPlayer) {
		this.musicObject = new Music ();
		this.musicObject.onLoad (this.objectName + '.loadSong ()');
		this.musicObject.stubEmbed (Music.QuickClip.stubPath + 'stub.rmf');
	}
	window [this.objectName] = this;
}

/*** Static Methods ***/

mo_addStaticMethods ('QuickClip');

with (Music) {
	/*** Public Static Properties ***/
	QuickClip.stubPath = '';
	QuickClip.imagePath = '';
	QuickClip.imageWidth = 38;
	QuickClip.imageHeight = 14;
	QuickClip.fadeOutTime = 500;

	/*** Private Static Properties ***/
	QuickClip.lastInstance = null;
	QuickClip.GINs = 0;
}
