/*:: Script Information ::Title       : JavaScript PlayerAuthor      : livibetterCreated date: 09/13/2006Updated date: 23:57 10/26/2006Version     : 0.0.4.3Credit      : lbmenu 0.2.1.2License     : GNU General Public LicenseCopyright   : 2006 livibetter:: Contact Information ::eMail		: web@livibetter.comMSN			: livibetter@gmail.comWebsite		: http://www.livibetter.com*/// ********// Settingsvar lb_JSPlayer_pathIMG = '/play/';// ***********// Main scriptvar lb_JSPlayer_count = 0;// Preload imagesvar lb_JSPlayer_img_note = new Image();var lb_JSPlayer_img_play = new Image();var lb_JSPlayer_img_pause = new Image();var lb_JSPlayer_img_stop = new Image();lb_JSPlayer_img_note.src = lb_JSPlayer_pathIMG + 'btn-note.png';lb_JSPlayer_img_play.src = lb_JSPlayer_pathIMG + 'btn-play.png';lb_JSPlayer_img_pause.src = lb_JSPlayer_pathIMG + 'btn-pause.png';lb_JSPlayer_img_stop.src = lb_JSPlayer_pathIMG + 'btn-stop.png';function clb_JSPlayer(sAudioURL, sCore, sBlankMP3URL){	var core;	if(sCore.length == 0)sCore = 'QTP';	if(sCore=='QTP' && haveqt){		if(sBlankMP3URL.length > 0)			core = new clb_JSPlayer_core('QTP', sBlankMP3URL);		else{			alert('Need blank MP3 URL');			return;			}		}	else{		core = new clb_JSPlayer_core('WMP');		}	this.core = core;	// Create Controls	document.write('<div class="lb_JSPlayer_div" id="lb_JSPlayer_' + lb_JSPlayer_count.toString() + '">');	// Set div for later using	this.div = document.getElementById('lb_JSPlayer_' + lb_JSPlayer_count.toString());	this.div.parent = this;	document.write(	'<div class="lb_JSPlayer_ctrl1" id="'+ this.div.id + '_ctrl1">' +						'<img class="lb_JSPlayer_ctrl1_i" id="' + this.div.id + '_ctrl1_i" src="' + lb_JSPlayer_pathIMG + 'btn-note.png" ' +							'onclick="document.getElementById(\'' + this.div.id + '\').parent.loadAudio(\'' + sAudioURL + '\')"/>' +					'</div>');	document.write(	'<div class="lb_JSPlayer_ctrl2" id="' + this.div.id + '_ctrl2">' +						'<img class="lb_JSPlayer_ctrl2_i" id="' + this.div.id + '_ctrl2_i" src="' + lb_JSPlayer_pathIMG + 'btn-stop.png" ' +							'onclick="document.getElementById(\'' + this.div.id + '\').parent.stop()"/>' +					'</div>');	document.write('<div class="lb_JSPlayer_status" id="' + this.div.id + '_status">00:00.0</div>');	document.write('</div>');		this.ctrl1 = document.getElementById(this.div.id + '_ctrl1');	this.ctrl2 = document.getElementById(this.div.id + '_ctrl2');	this.ctrl1.i = document.getElementById(this.div.id + '_ctrl1_i');	this.ctrl2.i = document.getElementById(this.div.id + '_ctrl2_i');	this.status = document.getElementById(this.div.id + '_status');	new clb_menu(this.ctrl2, false, new clb_menu_method(0,0,0), new clb_size(0,16));	new clb_menu(this.status, false, new clb_menu_method(0,0,0), new clb_size(0,16));	this.ctrl2.menu.toggle('collapse');	this.status.menu.toggle('collapse');	this.ctrl2.menu.methodDefault = new clb_menu_method(1000, 10, 10);	this.status.menu.methodDefault = new clb_menu_method(1000, 10, 10);	// Increase counter	lb_JSPlayer_count++;	/*	Method: loadAudio		Parameters:			sAudioURL:				string					URL of audio file.	*/	this.loadAudio = function (sAudioURL){		// Set status		this.core.prevState = 'loading';		this.status.innerHTML = 'loading';		this.status.menu.toggle('expand');		// Set prevState for detecting loading complete		// Ask load Audio file		this.core.loadAudio(sAudioURL);		// Set timer		this.timerUpdate = setTimeout('document.getElementById("' + this.div.id + '").parent.update()', 100);		}	/*		Method: playPause			Play audio or pause it	*/	this.playPause = function (){		this.core.playPause();		}	/*		Method: stop			stop audio	*/	this.stop = function (){		this.core.stop();		}	/*	Method: update		Update status text, current position and JSPlayer display	*/	this.update = function (){		var state = this.core.getState();		switch(state){			case 'unload':				// Keep trying load audio file.				this.loadAudio(this.core.URL);				break;			case 'loading':				// Set status				this.status.innerHTML = 'loading';				this.status.menu.toggle('expand');				break;			case 'stopped':				// Check for loading complete				if(this.core.prevState == 'unload' || this.core.prevState == 'loading'){					this.ctrl1.i.onclick = new Function('document.getElementById("' + this.div.id + '").parent.playPause()');					state = 'loading'; // Keep running this block until the audio is really played					// Play it					this.playPause();					}				else{					// Set ctrl1 as play button					this.ctrl1.i.src = lb_JSPlayer_pathIMG + 'btn-play.png';					// Hide ctrl2					this.ctrl2.menu.toggle('collapse');					// Set status					this.status.innerHTML = '';					this.status.menu.toggle('collapse');					}				break;			case 'playing':				// Set ctrl1 as pause button				this.ctrl1.i.src = lb_JSPlayer_pathIMG + 'btn-pause.png';				// Show ctrl2				this.ctrl2.menu.toggle('expand');				// Show status				this.status.menu.toggle('expand');				// Update position				var position = this.core.getPosition();				var currMin = Math.floor(position / 60);				var currSec = position - currMin * 60;				var padMin = (currMin < 10)?'0':'';				var padSec = (currSec < 10)?'0':'';				this.status.innerHTML = padMin + currMin.toString() + ':' + padSec + currSec.toFixed(1).toString();				break;			case 'paused':				// Set ctrl1 as play button				this.ctrl1.i.src = lb_JSPlayer_pathIMG + 'btn-play.png';				break;			default: //'error'				// Set ctrl to note again				this.ctrl1.i.src = lb_JSPlayer_pathIMG + 'btn-note.png';				this.ctrl1.i.onclick = new Function('document.getElementById("' + this.div.id + '").parent.loadAudio("' + this.core.URL + '")');				// Hide ctrl2				this.ctrl2.menu.toggle('collapse');				// Display error				this.status.innerHTML = 'ERROR!';				this.status.menu.toggle('expand');				break			}		this.core.prevState = state;		if(state != 'error')			this.timerUpdate = setTimeout('document.getElementById("' + this.div.id + '").parent.update()', 100);		}	}