function CanvasContainer(t){this.container=$(t),this.container.get(0).parentcv=this,this.canvas=$(t+" .cv_canvas"),this.zoom=1,this.fs=!1,this.context=this.canvas.get(0).getContext("2d"),$(window).on("fullscreenchange",function(t){pcv=t.target.parentcv,pcv.fs&&!document.fullscreenElement?pcv.exitFullScreen():setTimeout(function(){pcv.resize(-1,-1)},50)})}function CanvasWithRange(t,e,i,n){CanvasContainer.call(this,t),this.range=new CanvasRange(this,e,i,n)}function CanvasRange(t,e,i,n){this.parent=t,this.min=e,this.max=i,this.step=n,this.run=!1,this.time=e,this.timeout=50,pcid=t.container.attr("id"),this.btfull=$("#"+pcid+" .cv_full"),this.btfull.get(0).canvasrange=this,this.btfull.click(function(t){$(this).get(0).canvasrange.full_click()}),this.btplay=$("#"+pcid+" .cv_play"),this.btplay.get(0).canvasrange=this,this.btplay.click(function(t){$(this).get(0).canvasrange.play_click()}),this.irange=$("#"+pcid+" .irange"),this.irange.get(0).canvasrange=this,this.irange.on("change",function(t){$(this).get(0).canvasrange.onslideend(t)}),this.irange.attr("min",e),this.irange.attr("max",i),this.irange.attr("step",n),this.irange.val(e),this.redraw_play()}CanvasContainer.prototype={parentWidth:function(){nw=this.container.parent().width(),this.resize(nw,-1)},fullScreen:function(){this.fsw=this.container.width(),this.fsh=this.container.height(),this.fs=!0,elem=this.container.get(0),elem.requestFullscreen?elem.requestFullscreen():elem.mozRequestFullScreen?elem.mozRequestFullScreen():elem.webkitRequestFullscreen?elem.webkitRequestFullscreen():elem.msRequestFullscreen&&elem.msRequestFullscreen()},exitFullScreen:function(){document.fullscreenElement&&(document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()),this.resize(this.fsw,this.fsh),this.fs=!1},resize:function(t,e){-1==t&&(t=this.container.width()),-1==e&&(e=this.container.height()),void 0===t?t=this.container.width():this.container.width(t),void 0===e&&(e=t),this.container.height(e),cs=Math.min(t,e),this.canvas.get(0).width=t,this.canvas.get(0).height=e,this.setZoom(this.zoom),this.draw()},setZoom:function(t){this.zoom=t,this.w=this.canvas.get(0).clientWidth,this.h=this.canvas.get(0).clientHeight,this.w<=this.h?(max_x=t,max_y=t*this.h/this.w):(max_y=t,max_x=t*this.w/this.h),min_x=-max_x,min_y=-max_y,this.coors=new Array(min_x,max_x,min_y,max_y,max_x-min_x,max_y-min_y),ax=this.w/(max_x-min_x),bx=-min_x*ax,ay=this.h/(min_y-max_y),by=-max_y*ay,this.context.setTransform(ax,0,0,ay,bx,by)},draw:function(){}},CanvasRange.prototype={resize:function(){w=this.parent.container.width(),this.irange.width(w-70)},full_click:function(){cc=this.parent,cc.fs?cc.exitFullScreen():cc.fullScreen()},play_click:function(){this.run?this.stop():this.play()},redraw_play:function(){this.run?this.btplay.html("⏸"):this.btplay.html("▶")},play:function(){this.time>=this.max&&(this.time=this.min),this.run=!0,this.redraw_play(),this.loop()},stop:function(){this.run=!1,this.redraw_play()},loop:function(){this.time>=this.max&&this.stop(),this.run&&(this.time+=this.step,this.ontimechange(this.time),o=this,setTimeout(function(){o.loop()},this.timeout))},ontimechange:function(t){this.irange.val(t),this.parent.draw()},onslideend:function(t){return this.stop(),this.time=parseFloat(this.irange.val()),this.ontimechange(this.time),!0}},CanvasWithRange.prototype=Object.create(CanvasContainer.prototype),CanvasWithRange.prototype.constructor=CanvasWithRange,CanvasWithRange.prototype.resize=function(t,e){CanvasContainer.prototype.resize.call(this,t,e),this.range.resize()},CanvasWithRange.prototype.setTime=function(t){this.range.stop(),this.range.time=t,this.range.ontimechange(t)};// JavaScript Document