(function(a){var b=function(a){var b=new Image;b.onload=b.onerror=function(){a(this.width+this.height==2)},b.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="};a.fn.visualPassword=function(c){var d=this;b(function(b){if(!vizhash)throw"This script requires VizHash.js. Get it: http://is.gd/IJaMRG";var e=vizhash.supportCanvas();return c=a.extend({},a.fn.visualPassword.defaultOptions,c),a.metadata&&(c=a.extend({},d.options,element.metadata())),d.each(function(d,f){var g=a(f);g.addClass(c.passwordFieldClass),g.addClass(c.passwordFieldClass+"-"+d);if(e&&b){var h=[c.canvasClass,c.canvasClass+"-"+d];g.bind("keyup",function(a){console.log("bin");var b=c.createCanvas(g,h,c);console.log("bin"),c.onKeyUp(a,g,b,c)}),g.bind("resize",function(a){var b=c.createCanvas(g,h,c);c.onResize(a,g,b,c)}),g.bind("change",function(a){var b=c.createCanvas(g,h,c);c.onChange(a,g,b,c)})}else option.noSupport(g,e,b,c);var i=c.createCanvas(g,h,c);c.init(g,i,c)})})},a.fn.visualPassword.defaultOptions={passwordFieldClass:"hashed-password",canvasClass:"password-hash",height:null,width:null,offset:.1,onChange:function(){},onKeyUp:function(a,b,c,d){var e=Math.floor(b.innerHeight()),f=e*d.offset,g=c[0].toDataURL("image/png"),h="transparent url("+g+") no-repeat "+f+"px "+f+"px";b.css("background",h),b.css("padding-left",e+f),c.remove(),c=null},onResize:function(a,b,c,d){var c=createCanvas(input,[canvas.class()],d.width,option.height);d.onKeyUp(a,b,c,d)},createCanvas:function(b,c,d){var e=d.getSize(b,c,d),f=vizhash.canvasHash(b.val(),e.width,e.height),g=a(f.canvas);return a.each(c,function(a,b){g.addClass(b)}),g.click(function(a){d.onClickCanvas(a,b,g,d)}),b.unbind("click").unbind("hover").click(function(a){d.onClickPassword(a,b,g,d)}).hover(function(a){b.mousemove(function(a){d.onHoverPassword(a,"enter",b,g,d)})},function(a){b.unbind("mousemove"),d.onHoverPassword(a,"leave",b,g,d)}),g},noSupport:function(){},init:function(a,b,c){c.onKeyUp(null,a,b,c)},getSize:function(a,b,c){var d=Math.ceil(a.innerHeight()*(1-c.offset*2));return{width:c.width||d,height:c.height||d}},onClickPassword:function(a,b,c,d){var e=b.offset(),f=d.getSize(b,[],d),g=b.innerHeight()*d.offset;a.offsetX+g