/*! jQuery Canvas Overlay - v0.2.0 - 2013-07-08 * http://www.cw-internetdienste.de/overlay/ * Copyright (c) 2013 Christian Weber; Licensed MIT */ (function(t,i,e){"use strict";function s(e,s){this.element=e,this.options=t.extend({},h,s),this._defaults=h,this._name=o,this.ctx=null,this.wWidth=t(i).width(),this.wHeight=t(i).height(),this.mouseX=0,this.mouseY=0,this.cursor=null,this.init()}var o="CanvasOverlay",h={shadow:10,radius:150,ready:null,background:"rgba(0,0,0,1)",figure:null};s.prototype={init:function(){if(t(this.element).addClass("cw-overlay").css({"z-index":9999,width:"100%",height:"100%",position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}).attr({width:this.wWidth,height:this.wHeight}),!this.element.getContext)return console.log("Error: Browser does not support canvas element"),!1;this.ctx=this.element.getContext("2d"),this.createCursor();var e=this;t(i).on("mousemove",function(t){e._movement(t)}),t(i).on("resize",function(t){e._resize(t)}),t(this.element).on("click",function(t){e._action(t)}),t(this.element).on("mousemove",function(t){0===(new Date).getTime()%20&&e._action(t,"hover")}),this.renderOverlay(this.wWidth/2,this.wHeight/2),null!==this.options.ready&&this.options.ready(t(this.element))},_resize:function(){this.wWidth=t(i).width(),this.wHeight=t(i).height(),t(this.element).attr({width:this.wWidth,height:this.wHeight})},_movement:function(t){this.mouseX=t.clientX,this.mouseY=t.clientY,this.renderOverlay()},_action:function(i,s){var o=s||"click";t(this.element).hide();var h=e.elementFromPoint(this.mouseX,this.mouseY);t(this.element).show(),"click"===o&&t(h).focus(),t(h).trigger(o),i.preventDefault(),i.stopPropagation()},createCursor:function(){var t=e.createElement("canvas"),i=null;null!==this.options.figure&&this.options.figure instanceof Image?(t.setAttribute("width",this.options.figure.width),t.setAttribute("height",this.options.figure.height),i=t.getContext("2d"),i.globalCompositeOperation="source-over",i.drawImage(this.options.figure,0,0)):(t.setAttribute("width",2*(this.options.radius+this.options.shadow)),t.setAttribute("height",2*(this.options.radius+this.options.shadow)),i=t.getContext("2d"),i.globalCompositeOperation="source-over",i.fillStyle="rgba(255,0,0,1)",i.shadowBlur=this.options.shadow,i.shadowColor="rgba(255, 0, 0,.9)",i.arc(~~(t.width/2),~~(t.height/2),this.options.radius,0,2*Math.PI),i.fill()),this.cursor=t},renderOverlay:function(t,i){var e=t||this.mouseX,s=i||this.mouseY;this.ctx.globalCompositeOperation="source-over",this.ctx.fillStyle=this.options.background,this.ctx.fillRect(0,0,this.element.width,this.element.height),this.ctx.globalCompositeOperation="destination-out",this.ctx.drawImage(this.cursor,~~(e-(this.options.radius+this.options.shadow)/2),~~(s-(this.options.radius+this.options.shadow)/2),this.options.radius+this.options.shadow,this.options.radius+this.options.shadow)}},t.fn[o]=function(i){return this.each(function(){t.data(this,"plugin_"+o)||t.data(this,"plugin_"+o,new s(this,i))})}})(jQuery,window,document);