/*
 * CirclePlayer for the jPlayer Plugin (jQuery)
 * http://www.jplayer.org
 *
 * Copyright (c) 2009 - 2011 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
 *
 * Version: 1.0.1 (jPlayer 2.0.9)
 * Date: 30th May 2011
 *
 * Author: Mark J Panaghiston @thepag
 *
 * CirclePlayer prototype developed by:
 * Mark Boas @maboa
 * Silvia Benvenuti @aulentina
 * Jussi Kalliokoski @quinirill
 *
 * Inspired by :
 * Neway @imneway http://imneway.net/ http://forrst.com/posts/Untitled-CPt
 * and
 * Liam McKay @liammckay http://dribbble.com/shots/50882-Purple-Play-Pause
 *
 * Standing on the shoulders of :
 * John Resig @jresig
 * Mark Panaghiston @thepag
 * Louis-Rémi Babé @Louis_Remi
 */
var CirclePlayer=function(a,b,c){var d=this;this.cssClass={gt50:"cp-gt50",fallback:"cp-fallback"};this.spritePitch=104;this.spriteRatio=0.24;this.player=$(a);this.media=$.extend({},b);this.options=$.extend(true,{},{supplied:"m4a, oga",cssSelectorAncestor:"#cp_container_1",cssSelector:{play:".cp-play",pause:".cp-pause"}},c);this.cssTransforms=Modernizr.csstransforms;this.audio={};this.dragging=false;this.eventNamespace=".CirclePlayer";this.jq={};$.each({bufferHolder:".cp-buffer-holder",buffer1:".cp-buffer-1", buffer2:".cp-buffer-2",progressHolder:".cp-progress-holder",progress1:".cp-progress-1",progress2:".cp-progress-2",circleControl:".cp-circle-control"},function(a,b){d.jq[a]=$(d.options.cssSelectorAncestor+" "+b)});this._initSolution();this._initPlayer()}; CirclePlayer.prototype={_createHtml:function(){},_initPlayer:function(){var a=this;this.player.jPlayer(this.options);this.player.bind($.jPlayer.event.ready+this.eventNamespace,function(b){if(b.jPlayer.html.used&&b.jPlayer.html.audio.available)a.audio=$(this).data("jPlayer").htmlElement.audio;$(this).jPlayer("setMedia",a.media);a._initCircleControl()});this.player.bind($.jPlayer.event.play+this.eventNamespace,function(){$(this).jPlayer("pauseOthers")});this.player.bind($.jPlayer.event.timeupdate+this.eventNamespace, function(b){a.dragging||a._timeupdate(b.jPlayer.status.currentPercentAbsolute)});this.player.bind($.jPlayer.event.progress+this.eventNamespace,function(){var b=0;if(typeof a.audio.buffered==="object"&&a.audio.buffered.length>0){if(a.audio.duration>0){for(var c=b=0;c<a.audio.buffered.length;c++)b+=a.audio.buffered.end(c)-a.audio.buffered.start(c);b=100*b/a.audio.duration}}else b=0;a._progress(b)});this.player.bind($.jPlayer.event.ended+this.eventNamespace,function(){a._resetSolution()})},_initSolution:function(){this.cssTransforms? (this.jq.progressHolder.show(),this.jq.bufferHolder.show()):(this.jq.progressHolder.addClass(this.cssClass.gt50).show(),this.jq.progress1.addClass(this.cssClass.fallback),this.jq.progress2.hide(),this.jq.bufferHolder.hide());this._resetSolution()},_resetSolution:function(){this.cssTransforms?(this.jq.progressHolder.removeClass(this.cssClass.gt50),this.jq.progress1.css({transform:"rotate(0deg)"}),this.jq.progress2.css({transform:"rotate(0deg)"}).hide()):this.jq.progress1.css("background-position", "0 "+this.spritePitch+"px")},_initCircleControl:function(){var a=this;this.jq.circleControl.grab({onstart:function(){a.dragging=true},onmove:function(b){b=a._getArcPercent(b.position.x,b.position.y);a.player.jPlayer("playHead",b).jPlayer("play");a._timeupdate(b)},onfinish:function(b){a.dragging=false;b=a._getArcPercent(b.position.x,b.position.y);a.player.jPlayer("playHead",b).jPlayer("play")}})},_timeupdate:function(a){var b=a*3.6+"deg",c=(Math.floor(Math.round(a)*this.spriteRatio)-1)*-this.spritePitch; a<=50?this.cssTransforms?(this.jq.progressHolder.removeClass(this.cssClass.gt50),this.jq.progress1.css({transform:"rotate("+b+")"}),this.jq.progress2.hide()):this.jq.progress1.css("background-position","0 "+c+"px"):a<=100&&(this.cssTransforms?(this.jq.progressHolder.addClass(this.cssClass.gt50),this.jq.progress1.css({transform:"rotate(180deg)"}),this.jq.progress2.css({transform:"rotate("+b+")"}),this.jq.progress2.show()):this.jq.progress1.css("background-position","0 "+c+"px"))},_progress:function(a){var b= a*3.6+"deg";this.cssTransforms&&(a<=50?(this.jq.bufferHolder.removeClass(this.cssClass.gt50),this.jq.buffer1.css({transform:"rotate("+b+")"}),this.jq.buffer2.hide()):a<=100&&(this.jq.bufferHolder.addClass(this.cssClass.gt50),this.jq.buffer1.css({transform:"rotate(180deg)"}),this.jq.buffer2.show(),this.jq.buffer2.css({transform:"rotate("+b+")"})))},_getArcPercent:function(a,b){var c=this.jq.circleControl.offset(),d=a-c.left-this.jq.circleControl.width()/2,c=b-c.top-this.jq.circleControl.height()/2, d=Math.atan2(c,d);d>-1*Math.PI&&d<-0.5*Math.PI&&(d=2*Math.PI+d);return(d+Math.PI/2)/2*Math.PI*10},setMedia:function(a){this.media=$.extend({},a);this.player.jPlayer("setMedia",this.media)},play:function(a){this.player.jPlayer("play",a)},pause:function(a){this.player.jPlayer("pause",a)},destroy:function(){this.player.unbind(this.eventNamespace);this.player.jPlayer("destroy")}};

