/*! * jquery-canvas-sparkles - v1.0.1 - 2015-01-23 * * https://github.com/simeydotme/jQuery-canvas-sparkles * Copyright (c) 2015 Simon Goellner; * */ jQuery(function($){"use strict";function a(a,b){this.options=b,this.init(a)}$.fn.sparkle=function(b){return this.each(function(c,d){var e=$(d),f=$.extend({color:"#FFFFFF",count:30,overlap:0,speed:1,minSize:4,maxSize:7,direction:"both"},b),g=new a(e,f);e.on({"mouseover.sparkle focus.sparkle":function(){e.trigger("start.sparkle")},"mouseout.sparkle blur.sparkle":function(){e.trigger("stop.sparkle")},"start.sparkle":function(){g.start(e)},"stop.sparkle":function(){g.stop()},"resize.sparkle":function(){g.resize(e),g.setParticles()}})})},a.prototype={init:function(a){var b={position:"absolute",top:"-"+this.options.overlap+"px",left:"-"+this.options.overlap+"px","pointer-events":"none"};if("static"===a.css("position")&&a.css("position","relative"),this.$canvas=$("").addClass("sparkle-canvas").css(b).hide(),"auto"!==a.css("z-index")){var c=parseInt(a.css("z-index"),10);this.$canvas.css("z-index",c+1)}var d="IMG|BR|HR|INPUT",e="\\b"+a[0].nodeName+"\\b";this.isSingleton=new RegExp(e).test(d),this.isSingleton?this.$canvas.insertAfter(a):this.$canvas.appendTo(a),this.canvas=this.$canvas[0],this.context=this.canvas.getContext("2d"),this.sprite=new Image,this.sprite.src=this.datauri,this.spriteCoords=[0,6,13,20],this.canvas.width=1.2*a.outerWidth(),this.canvas.height=1.2*a.outerHeight(),this.setParticles(),this.anim=null,this.fade=!1},randomParticleSize:function(){return Math.floor(Math.random()*(this.options.maxSize-this.options.minSize+1)+this.options.minSize)},randomHexColor:function(){return"#"+("000000"+Math.floor(16777215*Math.random()).toString(16)).slice(-6)},setParticles:function(){this.particles=this.createSparkles(this.canvas.width,this.canvas.height)},createSparkles:function(a,b){for(var c=[],d=0;d2*Math.random(),h=Math.random()<5*Math.random();g&&(e.position.x+=e.delta.x*a.options.speed/1500),h&&(e.position.y-=e.delta.y*a.options.speed/800),e.position.x>a.canvas.width?(e.position.x=-a.options.maxSize,f=!0):e.position.x<-a.options.maxSize&&(e.position.x=a.canvas.width,f=!0),e.position.y>a.canvas.height?(e.position.y=-a.options.maxSize,e.position.x=Math.floor(Math.random()*a.canvas.width),f=!0):e.position.y<-a.options.maxSize&&(e.position.y=a.canvas.height,e.position.x=Math.floor(Math.random()*a.canvas.width),f=!0),f&&(e.size=a.randomParticleSize(),e.opacity=.4),e.opacity-=a.fade?.035:.005,e.opacity<=.15&&(e.opacity=a.fade?0:1.2),c%Math.floor(7*Math.random()+1)===0&&(e.style=a.spriteCoords[Math.floor(Math.random()*a.spriteCoords.length)])}a.draw(b),a.fade?(a.fadeCount-=1,a.fadeCount<0?(window.cancelAnimationFrame(a.anim),a.$canvas.hide()):a.update()):a.update()})},resize:function(a){this.canvas.width=a.outerWidth()+2*this.options.overlap,this.canvas.height=a.outerHeight()+2*this.options.overlap,this.isSingleton&&this.$canvas.css({top:a.position().top-this.options.overlap,left:a.position().left-this.options.overlap})},start:function(a){this.resize(a),this.$canvas.show(),window.cancelAnimationFrame(this.anim);for(var b=0;b