(function(a){a.fn.jpassword=function(f){var h=this;var f=a.extend({},a.fn.jpassword.defaults,f);var j='<div class="jpassword ui-widget ui-widget-header ui-corner-all"><div><p class="jpassword-meter">&nbsp;</p><p class="jpassword-info">&nbsp;</p></div></div>';return h.each(function(){if(a(h).is("input")){g(a(h))}});function g(l){var p="jpassword_"+parseInt(Math.random()*1000);var r=a(j).attr("id",p);if(f.flat==false){var s=l.offset();var q=d();var n="right";var t=s.top;var m=(s.left+l.width()-10);r.appendTo(document.body);if((m+r.width())>(q.left+q.width)){m-=(r.width()+l.width());n="left"}if((t+r.height())>(q.top+q.height)){t-=(r.height()-(l.height()*1.5));n+="bottom"}else{n+="top"}r.css({left:m+"px",top:t+"px",display:"none"})}else{r.insertAfter(l);r.css({position:"relative",display:"block"});r.addClass("jpassword-flat")}l.bind("keyup",function(u){e(l,r)});l.bind("focus",function(u){e(l,r);if(f.flat==false){k(r,"show")}if(a.isFunction(f.onShow)){f.onShow(l,r)}});l.bind("blur",function(u){if(f.flat==false){k(r,"hide")}if(a.isFunction(f.onHide)){f.onHide(l,r)}});var o=a("#"+f.generate);if(o){o.bind("click",function(u){l.val(b());e(l,r);return false})}if(a.isFunction(f.onComplete)){f.onComplete(l,r)}}function e(m,r){var q=m.val();var n=r.find(".jpassword-meter");var o=r.find(".jpassword-info");var l=i(q);var p="";if(l.lowercase<2){p=f.lang.lowercase}else{if(l.uppercase<2){p=f.lang.uppercase}else{if(l.number<2){p=f.lang.number}else{if(l.punctuation<2){p=f.lang.punctuation}else{if(l.special<2){p=f.lang.special}}}}}if(q.length<f.length&&l.level<10&&p==""){p=f.lang.length.replace(/-X-/g,f.length)}p=f.lang.basic;if(l.val==""){n.css("background-position","0 0")}else{if(l.level<5){n.css("background-position","0 -10px")}else{if(l.level<10){n.css("background-position","0 -20px")}else{n.css("background-position","0 -30px")}}}o.html(p);m.val(l.val);if(a.isFunction(f.onKeyup)){f.onKeyup(m)}}function i(p){p=p.replace(/(^\s+)|(\s+$)/g,"");var m=cCap=cMin=cPct=cSpe=1;var l=p.length;for(var q=0;q<l;q++){var o=p.charCodeAt(q);if(o<128){if(o>47&&o<58){m+=1}else{if(o>64&&o<91){cCap+=1}else{if(o>96&&o<123){cMin+=1}else{cPct+=2}}}}else{cSpe+=3}}var n=(m*cCap*cMin*cPct*cSpe);n=Math.round(Math.log((n*n)));return{val:p,level:n,number:m,uppercase:cCap,lowercase:cMin,punctuation:cPct,special:cSpe}}function b(){var n="";for(c=0;c<f.length;c++){var m=Math.round(32+Math.random()*222);var l=0;if((m>47&&m<58)||(m>64&&m<91)||(m>96&&m<123)){l=1}if(f.type==1&&m<127){l=1}if(f.type==2){l=1}if(f.special&&(m==48||m==49||m==50||m==53||m==54||m==56||m==57||m==66||m==67||m==68||m==71||m==73||m==75||m==79||m==80||m==81||m==83||m==85||m==86||m==87||m==88||m==90||m==99||m==104||m==105||m==107||m==108||m==111||m==112||m==113||m==115||m==117||m==118||m==119||m==120||m==122)){l=0}if(l==1){n+=String.fromCharCode(m)}else{c--}}return n}function k(m,l){if(l=="show"){m.fadeIn()}else{m.fadeOut()}}function d(){var l=document.compatMode=="CSS1Compat";return{left:(window.pageXOffset||(l?document.documentElement.scrollLeft:document.body.scrollLeft)),top:(window.pageYOffset||(l?document.documentElement.scrollTop:document.body.scrollTop)),width:(window.innerWidth||(l?document.documentElement.clientWidth:document.body.clientWidth)),height:(window.innerHeight||(l?document.documentElement.clientHeight:document.body.clientHeight))}}};a.fn.jpassword.defaults={lang:{please:"A strong password...",low:"Low security.",correct:"Correct security.",high:"High security.",length:"-X- characters would be a plus.",number:"Why not numbers?",uppercase:"And caps?",lowercase:"Some tiny?",punctuation:"Punctuations?",special:"Best, special characters?"},length:8,flat:false,type:1,special:0,generate:null,onShow:function(){},onHide:function(){},onKeyup:function(){},onComplete:function(){}}})(jQuery);