/*
 * jPlayer Plugin for jQuery JavaScript Library
 * http://www.happyworm.com/jquery/jplayer
 *
 * Copyright (c) 2009 - 2010 Happyworm Ltd
 * Dual licensed under the MIT and GPL licenses.
 *  - http://www.opensource.org/licenses/mit-license.php
 *  - http://www.gnu.org/copyleft/gpl.html
 *
 * Author: Mark J Panaghiston
 * Version: 1.0.0
 * Date: 18th February 2010
 */
(function(c){function k(a,b){function d(g){g=c[a][g]||[];return typeof g=="string"?g.split(/,?\s+/):g}var e=d("getter");return c.inArray(b,e)!=-1}c.fn.jPlayer=function(a){var b=typeof a=="string",d=Array.prototype.slice.call(arguments,1);if(b&&a.substring(0,1)=="_")return this;if(b&&k("jPlayer",a,d)){var e=c.data(this[0],"jPlayer");return e?e[a].apply(e,d):undefined}return this.each(function(){var g=c.data(this,"jPlayer");!g&&!b&&c.data(this,"jPlayer",new c.jPlayer(this,a))._init();g&&b&&c.isFunction(g[a])&&
g[a].apply(g,d)})};c.jPlayer=function(a,b){this.options=c.extend({},b);this.element=c(a)};c.jPlayer.getter="jPlayerOnProgressChange jPlayerOnSoundComplete jPlayerVolume jPlayerReady getData jPlayerController";c.jPlayer.defaults={cssPrefix:"jqjp",swfPath:"js",volume:80,oggSupport:false,nativeSupport:true,customCssIds:false,graphicsFix:true,errorAlerts:false,warningAlerts:false,position:"absolute",width:"0",height:"0",top:"0",left:"0",quality:"high",bgcolor:"#ffffff"};c.jPlayer._config={jPlayerControllerId:undefined,
isWaitingForPlay:false};c.jPlayer._diag={isPlaying:false,src:"",loadPercent:0,playedPercentRelative:0,playedPercentAbsolute:0,playedTime:0,totalTime:0};c.jPlayer._cssId={play:"jplayer_play",pause:"jplayer_pause",stop:"jplayer_stop",loadBar:"jplayer_load_bar",playBar:"jplayer_play_bar",volumeMin:"jplayer_volume_min",volumeMax:"jplayer_volume_max",volumeBar:"jplayer_volume_bar",volumeBarValue:"jplayer_volume_bar_value"};c.jPlayer.count=0;c.jPlayer.timeFormat={showHour:false,showMin:true,showSec:true,
padHour:false,padMin:true,padSec:true,sepHour:":",sepMin:":",sepSec:""};c.jPlayer.convertTime=function(a){var b=new Date(a),d=b.getUTCHours();a=b.getUTCMinutes();b=b.getUTCSeconds();d=c.jPlayer.timeFormat.padHour&&d<10?"0"+d:d;a=c.jPlayer.timeFormat.padMin&&a<10?"0"+a:a;b=c.jPlayer.timeFormat.padSec&&b<10?"0"+b:b;return(c.jPlayer.timeFormat.showHour?d+c.jPlayer.timeFormat.sepHour:"")+(c.jPlayer.timeFormat.showMin?a+c.jPlayer.timeFormat.sepMin:"")+(c.jPlayer.timeFormat.showSec?b+c.jPlayer.timeFormat.sepSec:
"")};c.jPlayer.prototype={_init:function(){var a=this,b=this.element;this.config=c.extend({},c.jPlayer.defaults,this.options,c.jPlayer._config);this.config.diag=c.extend({},c.jPlayer._diag);this.config.cssId={};this.config.cssSelector={};this.config.cssDisplay={};this.config.clickHandler={};this.element.data("jPlayer.config",this.config);c.extend(this.config,{id:this.element.attr("id"),swf:this.config.swfPath+(this.config.swfPath!=""&&this.config.swfPath.slice(-1)!="/"?"/":"")+"Jplayer.swf",fid:this.config.cssPrefix+
"_flash_"+c.jPlayer.count,aid:this.config.cssPrefix+"_audio_"+c.jPlayer.count,hid:this.config.cssPrefix+"_force_"+c.jPlayer.count,i:c.jPlayer.count});c.jPlayer.count++;if(this.config.ready!=undefined)if(c.isFunction(this.config.ready))this.jPlayerReady=this.config.ready;else this._warning("Constructor's ready option is not a function.");this.element.prepend('<audio id="'+this.config.aid+'"></audio>');c.extend(this.config,{aSel:c("#"+this.config.aid)});var d=this.config.aSel.get();c.extend(this.config,
{canPlayMP3:!!(d[0].canPlayType?""!=d[0].canPlayType("audio/mpeg")&&"no"!=d[0].canPlayType("audio/mpeg"):false),canPlayOGG:!!(d[0].canPlayType?""!=d[0].canPlayType("audio/ogg")&&"no"!=d[0].canPlayType("audio/ogg"):false),audio:d[0]});c.extend(this.config,{html5:!!(this.config.oggSupport?this.config.canPlayOGG?true:this.config.canPlayMP3:this.config.canPlayMP3)});c.extend(this.config,{usingFlash:!(this.config.html5&&this.config.nativeSupport),usingMP3:!(this.config.oggSupport&&this.config.canPlayOGG&&
this.config.nativeSupport)});d={setButtons:function(h,f){a.config.diag.isPlaying=f;if(a.config.cssId.play!=undefined&&a.config.cssId.pause!=undefined)if(f){a.config.cssSelector.play.css("display","none");a.config.cssSelector.pause.css("display",a.config.cssDisplay.pause)}else{a.config.cssSelector.play.css("display",a.config.cssDisplay.play);a.config.cssSelector.pause.css("display","none")}if(f)a.config.isWaitingForPlay=false}};var e={setFile:function(h,f){try{a._getMovie().fl_setFile_mp3(f);a.config.diag.src=
f;a.config.isWaitingForPlay=true;b.trigger("jPlayer.setButtons",false)}catch(j){a._flashError(j)}},play:function(){try{a._getMovie().fl_play_mp3()&&b.trigger("jPlayer.setButtons",true)}catch(h){a._flashError(h)}},pause:function(){try{a._getMovie().fl_pause_mp3()&&b.trigger("jPlayer.setButtons",false)}catch(h){a._flashError(h)}},stop:function(){try{a._getMovie().fl_stop_mp3()&&b.trigger("jPlayer.setButtons",false)}catch(h){a._flashError(h)}},playHead:function(h,f){try{a._getMovie().fl_play_head_mp3(f)&&
b.trigger("jPlayer.setButtons",true)}catch(j){a._flashError(j)}},playHeadTime:function(h,f){try{a._getMovie().fl_play_head_time_mp3(f)&&b.trigger("jPlayer.setButtons",true)}catch(j){a._flashError(j)}},volume:function(h,f){a.config.volume=f;try{a._getMovie().fl_volume_mp3(f)}catch(j){a._flashError(j)}}},g={setFile:function(h,f,j){a.config.aSel.remove();b.prepend('<audio id="'+a.config.aid+'"></audio>');a.config.aSel=c("#"+a.config.aid);h=a.config.aSel.get();a.config.audio=h[0];a.config.audio.volume=
a.config.volume/100;a.config.diag.src=a.config.usingMP3?f:j;a.config.isWaitingForPlay=true;b.trigger("jPlayer.setButtons",false);a.jPlayerOnProgressChange(0,0,0,0,0)},play:function(){if(a.config.isWaitingForPlay)a.config.audio.src=a.config.diag.src;a.config.audio.play();b.trigger("jPlayer.setButtons",true);clearInterval(a.config.jPlayerControllerId);a.config.jPlayerControllerId=window.setInterval(function(){a.jPlayerController(false)},100)},pause:function(){a.config.audio.pause();b.trigger("jPlayer.setButtons",
false)},stop:function(){try{a.config.audio.currentTime=0;b.trigger("jPlayer.pause");clearInterval(a.config.jPlayerControllerId);a.config.jPlayerControllerId=window.setInterval(function(){a.jPlayerController(true)},100)}catch(h){window.setTimeout(function(){a.stop()},100)}},playHead:function(h,f){try{a.config.audio.currentTime=a.config.audio.buffered?f*a.config.audio.buffered.end()/100:f*a.config.audio.duration/100;b.trigger("jPlayer.play")}catch(j){window.setTimeout(function(){a.playHead(f)},100)}},
playHeadTime:function(h,f){try{a.config.audio.currentTime=f/1E3;b.trigger("jPlayer.play")}catch(j){window.setTimeout(function(){a.playHeadTime(f)},100)}},volume:function(h,f){a.config.volume=f;a.config.audio.volume=f/100;a.jPlayerVolume(f)}};this.config.usingFlash?c.extend(d,e):c.extend(d,g);for(var i in d){e="jPlayer."+i;this.element.unbind(e);this.element.bind(e,d[i])}if(this.config.usingFlash)if(this._checkForFlash(8))if(c.browser.msie){d='<object id="'+this.config.fid+'"';d+=' classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';
d+=' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"';d+=' type="application/x-shockwave-flash"';d+=' width="'+this.config.width+'" height="'+this.config.height+'">';d+="</object>";i=[];i[0]='<param name="movie" value="'+this.config.swf+'" />';i[1]='<param name="quality" value="high" />';i[2]='<param name="FlashVars" value="id='+escape(this.config.id)+"&fid="+escape(this.config.fid)+"&vol="+this.config.volume+'" />';i[3]='<param name="allowScriptAccess" value="always" />';
i[4]='<param name="bgcolor" value="'+this.config.bgcolor+'" />';d=document.createElement(d);for(e=0;e<i.length;e++)d.appendChild(document.createElement(i[e]));this.element.html(d)}else{i='<embed name="'+this.config.fid+'" id="'+this.config.fid+'" src="'+this.config.swf+'"';i+=' width="'+this.config.width+'" height="'+this.config.height+'" bgcolor="'+this.config.bgcolor+'"';i+=' quality="high" FlashVars="id='+escape(this.config.id)+"&fid="+escape(this.config.fid)+"&vol="+this.config.volume+'"';i+=
' allowScriptAccess="always"';i+=' type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';this.element.html(i)}else this.element.html("<p>Flash 8 or above is not installed. <a href='http://get.adobe.com/flashplayer'>Get Flash!</a></p>");this.element.css({position:this.config.position,top:this.config.top,left:this.config.left});if(this.config.graphicsFix){this.element.append('<div id="'+this.config.hid+'"></div>');c.extend(this.config,{hSel:c("#"+this.config.hid)});
this.config.hSel.css({"text-indent":"-9999px"})}this.config.customCssIds||c.each(c.jPlayer._cssId,function(h,f){a.cssId(h,f)});if(!this.config.usingFlash){this.element.css({left:"-9999px"});window.setTimeout(function(){a.volume(a.config.volume);a.jPlayerReady()},100)}},jPlayerReady:function(){},setFile:function(a,b){this.element.trigger("jPlayer.setFile",[a,b])},play:function(){this.element.trigger("jPlayer.play")},pause:function(){this.element.trigger("jPlayer.pause")},stop:function(){this.element.trigger("jPlayer.stop")},
playHead:function(a){this.element.trigger("jPlayer.playHead",[a])},playHeadTime:function(a){this.element.trigger("jPlayer.playHeadTime",[a])},volume:function(a){this.element.trigger("jPlayer.volume",[a])},cssId:function(a,b){var d=this;if(typeof b=="string")if(c.jPlayer._cssId[a]){this.config.cssId[a]!=undefined&&this.config.cssSelector[a].unbind("click",this.config.clickHandler[a]);this.config.cssId[a]=b;this.config.cssSelector[a]=c("#"+b);this.config.clickHandler[a]=function(e){d[a](e);return false};
this.config.cssSelector[a].click(this.config.clickHandler[a]);this.config.cssDisplay[a]=this.config.cssSelector[a].css("display");a=="pause"&&this.config.cssSelector[a].css("display","none")}else this._warning("Unknown/Illegal function in cssId\n\njPlayer('cssId', '"+a+"', '"+b+"')");else this._warning("cssId CSS Id must be a string\n\njPlayer('cssId', '"+a+"', "+b+")")},loadBar:function(a){if(this.config.cssId.loadBar!=undefined){var b=this.config.cssSelector.loadBar.offset();a=a.pageX-b.left;b=
this.config.cssSelector.loadBar.width();this.playHead(100*a/b)}},playBar:function(a){this.loadBar(a)},onProgressChange:function(a){if(c.isFunction(a))this.onProgressChangeCustom=a;else this._warning("onProgressChange parameter is not a function.")},onProgressChangeCustom:function(){},jPlayerOnProgressChange:function(a,b,d,e,g){this.config.diag.loadPercent=a;this.config.diag.playedPercentRelative=b;this.config.diag.playedPercentAbsolute=d;this.config.diag.playedTime=e;this.config.diag.totalTime=g;
this.config.cssId.loadBar!=undefined&&this.config.cssSelector.loadBar.width(a+"%");this.config.cssId.playBar!=undefined&&this.config.cssSelector.playBar.width(b+"%");this.onProgressChangeCustom(a,b,d,e,g);this._forceUpdate()},jPlayerController:function(a){var b=0,d=0,e=0,g=0,i=0;if(this.config.audio.readyState>=1){b=this.config.audio.currentTime*1E3;d=this.config.audio.duration*1E3;d=isNaN(d)?0:d;e=d>0?100*b/d:0;g=this.config.audio.buffered?100*this.config.audio.buffered.end()/this.config.audio.duration:
100;i=this.config.audio.buffered?100*this.config.audio.currentTime/this.config.audio.buffered.end():e}if(this.config.audio.ended){clearInterval(this.config.jPlayerControllerId);this.jPlayerOnSoundComplete()}else!this.config.diag.isPlaying&&g>=100&&clearInterval(this.config.jPlayerControllerId);a?this.jPlayerOnProgressChange(g,0,0,0,d):this.jPlayerOnProgressChange(g,i,e,b,d)},volumeMin:function(){this.volume(0)},volumeMax:function(){this.volume(100)},volumeBar:function(a){if(this.config.cssId.volumeBar!=
undefined){var b=this.config.cssSelector.volumeBar.offset();a=a.pageX-b.left;b=this.config.cssSelector.volumeBar.width();this.volume(100*a/b)}},volumeBarValue:function(a){this.volumeBar(a)},jPlayerVolume:function(a){if(this.config.cssId.volumeBarValue!=null){this.config.cssSelector.volumeBarValue.width(a+"%");this._forceUpdate()}},onSoundComplete:function(a){if(c.isFunction(a))this.onSoundCompleteCustom=a;else this._warning("onSoundComplete parameter is not a function.")},onSoundCompleteCustom:function(){},
jPlayerOnSoundComplete:function(){this.element.trigger("jPlayer.setButtons",false);this.onSoundCompleteCustom()},getData:function(a){for(var b=a.split("."),d=this.config,e=0;e<b.length;e++)if(d[b[e]]!=undefined)d=d[b[e]];else{this._warning("Undefined data requested.\n\njPlayer('getData', '"+a+"')");return}return d},_getMovie:function(){return document[this.config.fid]},_checkForFlash:function(a){var b=false,d;if(window.ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+a);b=true}catch(e){}else if(navigator.plugins&&
navigator.mimeTypes.length>0)if(d=navigator.plugins["Shockwave Flash"])if(navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1")>=a)b=true;return b},_forceUpdate:function(){this.config.graphicsFix&&this.config.hSel.text(""+Math.random())},_flashError:function(a){this._error("Problem with Flash component.\n\nCheck the swfPath points at the Jplayer.swf path.\n\nswfPath = "+this.config.swfPath+"\nurl: "+this.config.swf+"\n\nError: "+a.message)},_error:function(a){this.config.errorAlerts&&
this._alert("Error!\n\n"+a)},_warning:function(a){this.config.warningAlerts&&this._alert("Warning!\n\n"+a)},_alert:function(a){alert("jPlayer : id='"+this.config.id+"' : "+a)}}})(jQuery);