/**
 * vintageJS is a jQuery plugin that uses the HTML5 canvas element to add a vintage look to images
 *
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Built on top of the jQuery library
 * http://jquery.com
 *
 *
 * @author Robert Fleischmann
 * @version 1.0.0
 */
jQuery.fn.vintage=function(a){var o=[0,0,0,1,1,2,3,3,3,4,4,4,5,5,5,6,6,7,7,7,7,8,8,8,9,9,9,9,10,10,10,10,11,11,12,12,12,12,13,13,13,14,14,15,15,16,16,17,17,17,18,19,19,20,21,22,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,44,45,47,48,49,52,54,55,57,59,60,62,65,67,69,70,72,74,77,79,81,83,86,88,90,92,94,97,99,101,103,107,109,111,112,116,118,120,124,126,127,129,133,135,136,140,142,143,145,149,150,152,155,157,159,162,163,165,167,170,171,173,176,177,178,180,183,184,185,188,189,190,192,194,
195,196,198,200,201,202,203,204,206,207,208,209,211,212,213,214,215,216,218,219,219,220,221,222,223,224,225,226,227,227,228,229,229,230,231,232,232,233,234,234,235,236,236,237,238,238,239,239,240,241,241,242,242,243,244,244,245,245,245,246,247,247,248,248,249,249,249,250,251,251,252,252,252,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],p=[0,0,1,2,2,3,5,5,6,7,8,8,10,11,11,12,13,15,15,16,17,18,18,19,21,22,22,23,24,
26,26,27,28,29,31,31,32,33,34,35,35,37,38,39,40,41,43,44,44,45,46,47,48,50,51,52,53,54,56,57,58,59,60,61,63,64,65,66,67,68,69,71,72,73,74,75,76,77,79,80,81,83,84,85,86,88,89,90,92,93,94,95,96,97,100,101,102,103,105,106,107,108,109,111,113,114,115,117,118,119,120,122,123,124,126,127,128,129,131,132,133,135,136,137,138,140,141,142,144,145,146,148,149,150,151,153,154,155,157,158,159,160,162,163,164,166,167,168,169,171,172,173,174,175,176,177,178,179,181,182,183,184,186,186,187,188,189,190,192,193,194,
195,195,196,197,199,200,201,202,202,203,204,205,206,207,208,208,209,210,211,212,213,214,214,215,216,217,218,219,219,220,221,222,223,223,224,225,226,226,227,228,228,229,230,231,232,232,232,233,234,235,235,236,236,237,238,238,239,239,240,240,241,242,242,242,243,244,245,245,246,246,247,247,248,249,249,249,250,251,251,252,252,252,253,254,255],q=[53,53,53,54,54,54,55,55,55,56,57,57,57,58,58,58,59,59,59,60,61,61,61,62,62,63,63,63,64,65,65,65,66,66,67,67,67,68,69,69,69,70,70,71,71,72,73,73,73,74,74,75,75,
76,77,77,78,78,79,79,80,81,81,82,82,83,83,84,85,85,86,86,87,87,88,89,89,90,90,91,91,93,93,94,94,95,95,96,97,98,98,99,99,100,101,102,102,103,104,105,105,106,106,107,108,109,109,110,111,111,112,113,114,114,115,116,117,117,118,119,119,121,121,122,122,123,124,125,126,126,127,128,129,129,130,131,132,132,133,134,134,135,136,137,137,138,139,140,140,141,142,142,143,144,145,145,146,146,148,148,149,149,150,151,152,152,153,153,154,155,156,156,157,157,158,159,160,160,161,161,162,162,163,164,164,165,165,166,166,
167,168,168,169,169,170,170,171,172,172,173,173,174,174,175,176,176,177,177,177,178,178,179,180,180,181,181,181,182,182,183,184,184,184,185,185,186,186,186,187,188,188,188,189,189,189,190,190,191,191,192,192,193,193,193,194,194,194,195,196,196,196,197,197,197,198,199],r={vignette:{black:0.6,white:0.1},noise:20,screen:{red:255,green:255,blue:0,strength:0.1},desaturate:false,allowMultiEffect:false,mime:"image/jpeg",viewFinder:false},s={vignette:{black:0.7,white:0.2},noise:25,screen:false,desaturate:1,
allowMultiEffect:false,mime:"image/jpeg",viewFinder:false},t={vignette:{black:0.6,white:0.1},noise:25,screen:{red:141,green:107,blue:3,strength:0.47},desaturate:0.7,allowMultiEffect:false,mime:"image/jpeg",viewFinder:false},u={vignette:false,noise:false,screen:false,desaturate:false,allowMultiEffect:true,mime:"image/jpeg",viewFinder:false};a=a||{};a.preset=a.preset||"default";switch(a.preset){case "custom":a=jQuery.extend(u,a);break;case "green":a=jQuery.extend(r,a);break;case "sepia":a=jQuery.extend(t,
a);break;case "grayscale":a=jQuery.extend(s,a);break;default:a=jQuery.extend({vignette:{black:0.6,white:0.1},noise:20,screen:{red:227,green:12,blue:169,strength:0.1},desaturate:false,allowMultiEffect:false,mime:"image/jpeg",viewFinder:false},a)}return this.each(function(){var i=jQuery(this),g,c,l;if(i.is("img")){if(a.allowMultiEffect===false)if(i.data("vintage-applied")!==true)i.data("vintage-applied",true);else return;var x=function(){c=jQuery("<canvas></canvas>").get(0);if(c.getContext){g=c.getContext("2d");
var e=new Image;e.src=i.attr("src");e.onload=function(){c.width=this.width;c.height=this.height;g.drawImage(this,0,0,this.width,this.height,0,0,c.width,c.height);a.vignette!==false&&v();w(function(){i.attr("src",c.toDataURL(a.mime));l.remove();typeof a.callback=="function"&&a.callback()})}}else l.addClass("error").html("Your browser does not support the canvas element.").animate({opacity:"+=0"},3E3,function(){$(this).fadeOut(300,function(){$(this).remove()})})},v=function(){var e,b=Math.sqrt(Math.pow(c.width/
2,2)+Math.pow(c.height/2,2));g.globalCompositeOperation="source-over";e=g.createRadialGradient(c.width/2,c.height/2,0,c.width/2,c.height/2,b);e.addColorStop(0,"rgba(0,0,0,0)");e.addColorStop(0.65,"rgba(0,0,0,0)");e.addColorStop(1,"rgba(0,0,0,"+a.vignette.black+")");g.fillStyle=e;g.fillRect(0,0,c.width,c.height);g.globalCompositeOperation="lighter";e=g.createRadialGradient(c.width/2,c.height/2,0,c.width/2,c.height/2,b);e.addColorStop(0,"rgba(255,255,255,"+a.vignette.white+")");e.addColorStop(0.65,
"rgba(255,255,255,0)");e.addColorStop(1,"rgba(0,0,0,0)");g.fillStyle=e;g.fillRect(0,0,c.width,c.height)},w=function(e){for(var b=g.getImageData(0,0,c.width,c.height),d=0;d<b.data.length;d+=4){if(a.desaturate!==false){var k=(o[b.data[d]]+p[b.data[d+1]]+q[b.data[d+2]])/3;b.data[d]+=Math.round((k-b.data[d])*a.desaturate);b.data[d+1]+=Math.round((k-b.data[d+1])*a.desaturate);b.data[d+2]+=Math.round((k-b.data[d+2])*a.desaturate)}else{b.data[d]=o[b.data[d]];b.data[d+1]=p[b.data[d+1]];b.data[d+2]=q[b.data[d+
2]]}if(a.screen!==false){b.data[d]=255-(255-b.data[d])*(255-a.screen.red*a.screen.strength)/255;b.data[d+1]=255-(255-b.data[d+1])*(255-a.screen.green*a.screen.strength)/255;b.data[d+2]=255-(255-b.data[d+2])*(255-a.screen.blue*a.screen.strength)/255}if(a.noise>0){k=Math.round(a.noise-Math.random()*a.noise/2);for(var m=0,n=0;n<3;n++){m=k+b.data[d+n];b.data[d+n]=m>255?255:m<0?0:m}}}if(a.viewFinder!==false){d=new Image;d.src=a.viewFinder;d.onload=function(){var j=jQuery("<canvas></canvas>").get(0),f=
j.getContext("2d");j.width=c.width;j.height=c.height;f.drawImage(this,0,0,this.width,this.height,0,0,c.width,c.height);j=f.getImageData(0,0,c.width,c.height);for(f=0;f<b.data.length;f+=4){var h=b.data[f]*j.data[f]/255;b.data[f]=h>255?255:h<0?0:h;h=b.data[f+1]*j.data[f+1]/255;b.data[f+1]=h>255?h:h<0?0:h;h=b.data[f+2]*j.data[f+2]/255;b.data[f+2]=h>255?255:h<0?0:h}g.putImageData(b,0,0);e()}}else{g.putImageData(b,0,0);e()}};(function(){var e=i.offset();e.top+=Math.round(i.height()/2);e.left+=Math.round(i.width()/
2);l=jQuery('<div class="vintage-loader">Loading&hellip;</div>');l.css("top",e.top+"px").css("left",e.left+"px").hide().appendTo("body").fadeTo(0,0.8,function(){x()})})()}})};

