(function($){$.fn.Video5=function(options){var v=this;if($.video5.u.is5(v)){v=$.video5.u.extend(v);v.attr('controls',false);v.bind('loadedmetadata',function(){$.video5.c.create(v);v.vReady();}).bind('timeupdate',function(){v.vTimeUpdate();}).bind('progress',function(data){v.vProgress(data.originalEvent.loaded,data.originalEvent.total);}).bind('ended',function(){v.vEnded();}).bind('error',function(e){switch(e.target.error.code){case e.target.error.MEDIA_ERR_ABORTED:alert('You aborted the video playback.');break;case e.target.error.MEDIA_ERR_NETWORK:alert('A network error caused the video download to fail part-way.');break;case e.target.error.MEDIA_ERR_DECODE:alert('The video playback was aborted due to a corruption problem or because the video used features your browser did not support.');break;case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:alert('The video could not be loaded, either because the server or network failed or because the format is not supported.');break;default:alert('An unknown error occurred.');break;}});}else{v=$('.video5 object');v=(v.length)?v:$('.video5 embed');v=$.video5.u.extend(v);setInterval(function(){if(v.vGetDuration()!=-1){if(!v.ctrls){$.video5.c.create(v);v.vReady();}else{var s=v[0].getValue(['status'])[1];if(s=='paused'||s=='stopped')v.ctrls.btns.play.removeClass('pausebtn');else{if(s=='playing'&&v.ctrls.btns.start.css('display')!='none'){v.ctrls.btns.start.click();}var d=v[0].getValue(['loaded']);v.vProgress(d[1],d[2]);v.vTimeUpdate();}}}},500);}};$.video5={};$.video5.a={vGetDuration:function(){var d=0,m=this;if(m.data('vDuration')){d=m.data('vDuration');}else{if($.video5.u.is5(m)){if(m.attr('duration')&&!isNaN(m.attr('duration'))){d=m.attr('duration');}}else{d=m[0].getValue(['duration'])[1];m.data('vDuration',d);}}return d;},vGetCurrentTime:function(){if($.video5.u.is5(this)){return this.attr('currentTime');}else{return this[0].getValue(['current'])[1];}},vSetDuration:function(){this.data('vDuration',this.vGetCurrentTime());},vSetCurrentTime:function(t){if($.video5.u.is5(this)){this.attr('currentTime',t);}else{this[0].sendAction(['seek',t]);}},vSetVolume:function(v){if($.video5.u.is5(this)){this.attr('volume',v);}else{this[0].sendAction(['volume',v]);}},vIsSeeking:function(){if($.video5.u.is5(this)){return this.attr('seeking');}else{return this[0].getValue(['status'])[1]=='seeking';}},vIsAutoplay:function(){if($.video5.u.is5(this)){return this.attr('autoplay');}},vPlay:function(){if($.video5.u.is5(this)){this[0].play();}else{this[0].sendAction(["play"]);}},vPause:function(){if($.video5.u.is5(this)){this[0].pause();}else{this[0].sendAction(["pause"]);}},vReady:function(){$.video5.u.dimension(this);var m=this,l=m.ctrls.column.left,r=m.ctrls.column.right,lw,rw;lw=l.width()+'px';rw=r.width()+'px';m.ctrls.container.css({'padding-left':lw,'padding-right':rw});l.css('right',lw);r.css('margin-right','-'+rw);m.ctrls.ctrls.hide();$.video5.u.domEvt(this);var s=this.ctrls.btns.start;if(!this.vIsAutoplay()){s.width(this.width()).height(this.height()).show();}else{s.click();}},vMute:function(m){if($.video5.u.is5(this)){this.attr('muted',m);}else{this[0].sendAction(["mute",m]);}},vProgress:function(l,t){if(this.ctrls&&l&&t)this.ctrls.bars.loaded.width((l/t*100)+'%').show();},vTimeUpdate:function(){this.ctrls.times.html($.video5.u.formatTime(this.vGetCurrentTime())+'/'+$.video5.u.formatTime(this.vGetDuration()));$.video5.u.displace(this);},vEnded:function(){this.vSetDuration();this.vSetCurrentTime(0);if(this.attr('loop')){this.vPlay();}else{this.ctrls.btns.play.removeClass('pausebtn');}}};$.video5.c={create:function(v){var id=$.video5.u.getId('ctrl');v.before('<span class="startbtn"></span>').after('<div class="ctrls" id="'+id+'">'+'<div class="ctrls-container">'+'<div class="seekbar columns">'+'<div class="seekbarscontainer">'+'<div class="loadedbar"></div>'+'</div>'+'<div class="seekbtn"></div>'+'</div>'+'<div class="columns left-column"><span class="playbtn btns"></span></div>'+'<div class="columns right-column"><em class="elapse-duration">00:00/00:00</em>'+'<span class="mutebtn btns"></span>'+'<div class="volumebar">'+'<div class="volumebarcontainer">'+'<div class="activebar"></div>'+'</div>'+'<div class="volumebtn"></div>'+'</div>'+'<span class="fullscreenbtn btns"></span></div>'+'</div>'+'</div>');id='#'+id;v.ctrls={'ctrls':$(id),'container':$(id+' .ctrls-container'),'times':$(id+' .elapse-duration'),'column':{'left':$(id+' .left-column'),'right':$(id+' .right-column')},'btns':{'start':$('.startbtn',v.parent()),'play':$(id+' .playbtn'),'mute':$(id+' .mutebtn'),'fullscreen':$(id+' .fullscreenbtn'),'seek':$(id+' .seekbtn'),'vol':$(id+' .volumebtn')},'bars':{'seek':$(id+' .seekbar'),'container':$(id+' .seekbarscontainer'),'loaded':$(id+' .loadedbar'),'volume':$(id+' .volumebarcontainer'),'active':$(id+' .activebar')}};v.parent().addClass('shadow').mouseover(function(){if(v.ctrls.btns.start.css('display')=='none')v.ctrls.ctrls.show();}).mouseout(function(){});with(this.evt){play(v);mute(v);fullscreen(v);volume(v);seek(v);}},evt:{play:function(v){v.ctrls.btns.start.click(function(){$(this).hide();v.ctrls.ctrls.show();v.ctrls.btns.play.click();});v.ctrls.btns.play.click(function(){if($(this).hasClass('pausebtn')){v.vPause();}else{v.vPlay();}$(this).toggleClass('pausebtn');});},mute:function(v){v.ctrls.btns.mute.click(function(){$(this).toggleClass('mutebtn-on');v.vMute($(this).hasClass('mutebtn-on'));});},fullscreen:function(v){var p=v.parent();v.ctrls.btns.fullscreen.click(function(){p.toggleClass('shadow').toggleClass('fullscreen');if(p.hasClass('fullscreen')){var o={'width':'100%','height':'100%'};p.css(o);v.css(o);$('body').css({'overflow':'hidden'});}else{$.video5.u.dimension(v);$('body').css({'overflow':'auto'});}$.video5.u.displace(v);$(this).toggleClass('fullscreenrtnbtn');});},volume:function(v){var b=v.ctrls.btns.vol,vb=v.ctrls.bars.volume;b.attr('moving','false').mousedown(function(){b.attr('moving','true');});vb.click(function(e){var me=$(this),l=me.offset().left,x=e.pageX-l,mew=me.width(),bw=b.width(),vol=x/mew,p=Math.min(x,mew-bw);b.css('left',p+'px');v.ctrls.bars.active.show().width(p+bw/2);v.vSetVolume(vol);});},seek:function(v){var s=v.ctrls.btns.seek;s.attr('moving','false').mousedown(function(){$(this).attr('moving','true');});v.ctrls.bars.container.click(function(e){var x=e.pageX-$(this).offset().left;s.css('left',(x-s.width()/2)+'px');v.vSetCurrentTime(x/v.ctrls.bars.container.width()*v.vGetDuration());});}},act:{seek:function(v,c){var b=v.ctrls.btns.seek,s=v.ctrls.bars.container;if(b.length>0&&b.attr('moving')==='true'){var x=Math.max(c.x-s.offset().left,0);x=Math.min(x,s.width()-b.width());b.css('left',x+'px');}},volume:function(v,c){var b=v.ctrls.btns.vol,vb=v.ctrls.bars.volume,l=(vb.length>0)?vb.offset().left:0;if(b.length>0&&b.attr('moving')==='true'){var bw=b.width(),vbw=vb.width(),x=Math.max(c.x-vb.offset().left,0);x=Math.min(vbw-bw,x);if(bw!=0){b.css('left',x);v.ctrls.bars.active.width(x+bw/2);v.vSetVolume(x/(vbw-bw));}}}}};$.video5.u={is5:function(v){return(v[0]&&v[0].canPlayType);},extend:function(v){for(a in $.video5.a){v[a]=$.video5.a[a];}return v;},formatTime:function(n){var m=Math.floor(n/60)<10?"0"+Math.floor(n/60):Math.floor(n/60);var s=Math.floor(n-(m*60))<10?"0"+Math.floor(n-(m*60)):Math.floor(n-(m*60));return m+":"+s;},getId:function(pre){var id=pre+Math.random()*Math.pow(10,17);while($('#'+id).length){id=pre+Math.random()*Math.pow(10,17);}return id;},dimension:function(v){var h=v.attr('height')||v.attr('videoHeight'),w=v.attr('width')||v.attr('videoWidth'),o={'height':h,'width':w};v.css(o).parent().css(o);},displace:function(v){var b=v.ctrls.btns.seek,c=v.ctrls.bars.container.width(),l=v.ctrls.bars.loaded.width(),d=v.vGetDuration();if(!v.vIsSeeking()&&b.attr('moving')==='false'){b.css('left',((d>0)?Math.floor(v.vGetCurrentTime()*(c-b.width()/2)/d):Math.max(l-b.width()/2,0))+'px');}},domEvt:function(v){$(document).mousemove(function(e){var c={'x':e.pageX,'y':e.pageY};$.video5.c.act.seek(v,c);$.video5.c.act.volume(v,c);}).mouseup(function(e){var s=v.ctrls.btns.seek;if(s.attr('moving')==='true')v.vSetCurrentTime(v.vGetDuration()*parseFloat(s.css('left'))/v.ctrls.bars.seek.width());s.attr('moving','false');v.ctrls.btns.vol.attr('moving','false');});}};$(function(){$('.video5 video').Video5();});})(jQuery)
