/**
* jQuery jPassword plugin
* @licenses	Creative Commons BY-SA [ http://creativecommons.org/licenses/by-sa/2.0/deed.fr ]
*
* Modifed by Crumpled Dog for National Grid
*/
(function(i){i.fn.jpassword=function(b){var l=this;var b=i.extend({},i.fn.jpassword.defaults,b);var q='<div class="jpassword"><div><p class="jpassword-meter">&nbsp;</p><p class="jpassword-info">&nbsp;</p></div></div>';return l.each(function(){if(i(l).is("input")){r(i(l))}});function r(a){var j="jpassword_"+parseInt(Math.random()*1000);var d=i(q).attr("id",j);if(b.flat==false){var g=a.offset();var f=s();var h="right";var k=g.top;var m=(g.left+a.width());d.appendTo(document.body);if((m+d.width())>(f.left+f.width)){m-=(d.width()+a.width());h="left"}if((k+d.height())>(f.top+f.height)){k-=(d.height()-(a.height()*1.5));h+="bottom"}else{h+="top"}d.css({left:m+"px",top:k+"px",display:"none"});d.addClass("jpassword-"+h)}else{d.insertAfter(a);d.css({position:"relative",display:"block"});d.addClass("jpassword-flat")}a.bind("keyup",function(e){n(a,d)});a.bind("focus",function(e){n(a,d);if(b.flat==false){o(d,"show")}if(i.isFunction(b.onShow)){b.onShow(a,d)}});a.bind("blur",function(e){if(b.flat==false){o(d,"hide")}if(i.isFunction(b.onHide)){b.onHide(a,d)}});var p=i("#"+b.generate);if(p){p.bind("click",function(e){a.val(t());n(a,d);return false})}if(i.isFunction(b.onComplete)){b.onComplete(a,d)}}function n(e,a){var j=e.val();var d=a.find(".jpassword-meter");var g=a.find(".jpassword-info");var f=u(j);var h="";if(f.lowercase<2){h=b.lang.lowercase}else if(f.uppercase<2){h=b.lang.uppercase}else if(f.number<2){h=b.lang.number}else if(f.punctuation<2){h=b.lang.punctuation}if(b.strength!=''){var k=i("#"+b.strength);k.val(f.level)}if(j.length<b.length&&f.level<5&&h==""){h=b.lang.length.replace(/-X-/g,b.length)}if(f.val==""){d.css("background-position","0 0");g.html(b.lang.please)}else if(f.level<3){d.css("background-position","0 -10px");g.html(b.lang.low+" "+h)}else if(f.level<5){d.css("background-position","0 -20px");g.html(b.lang.correct+" "+h)}else{d.css("background-position","0 -30px");g.html(b.lang.high)}e.val(f.val);if(i.isFunction(b.onKeyup)){b.onKeyup(e)}}function u(e){e=e.replace(/(^\s+)|(\s+$)/g,"");var a=cCap=cMin=cPct=cSpe=1;var j=e.length;for(var d=0;d<j;d++){var g=e.charCodeAt(d);if(g<128){if(g>47&&g<58){a+=1}else if(g>64&&g<91){cCap+=1}else if(g>96&&g<123){cMin+=1}else{cPct+=1}}else{cPct+=1}}var f=0;if((a-1)>0){f+=1}if((cCap-1)>0){f+=1}if((cMin-1)>0){f+=1}if((cPct-1)>0){f+=1}if(e.length>=b.length){f+=1}var h=(f);return{val:e,level:h,number:a,uppercase:cCap,lowercase:cMin,punctuation:cPct,special:cSpe}}function t(){var e="";for(c=0;c<b.length;c++){var a=Math.round(32+Math.random()*222);var j=0;if((a>47&&a<58)||(a>64&&a<91)||(a>96&&a<123)){j=1}if(b.type==1&&a<127){j=1}if(b.type==2){j=1}if(b.special&&(a==48||a==49||a==50||a==53||a==54||a==56||a==57||a==66||a==67||a==68||a==71||a==73||a==75||a==79||a==80||a==81||a==83||a==85||a==86||a==87||a==88||a==90||a==99||a==104||a==105||a==107||a==108||a==111||a==112||a==113||a==115||a==117||a==118||a==119||a==120||a==122)){j=0}if(j==1){e+=String.fromCharCode(a)}else{c--}}return e}function o(e,a){if(a=="show"){e.fadeIn()}else{e.fadeOut()}}function s(){var e=document.compatMode=="CSS1Compat";return{left:(window.pageXOffset||(e?document.documentElement.scrollLeft:document.body.scrollLeft)),top:(window.pageYOffset||(e?document.documentElement.scrollTop:document.body.scrollTop)),width:(window.innerWidth||(e?document.documentElement.clientWidth:document.body.clientWidth)),height:(window.innerHeight||(e?document.documentElement.clientHeight:document.body.clientHeight))}}};i.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);
