/* Taken from: http://projects.sharkmediallc.com/pass/ */
$.fn.passwordStrength = function(options){
  return this.each(function(){
    var that = this;that.opts = {};
    that.opts = $.extend({}, $.fn.passwordStrength.defaults, options);

    that.div = $(that.opts.targetDiv);
    that.defaultClass = that.div.attr('class');

    that.percents = (that.opts.classes.length) ? 100 / that.opts.classes.length : 100;

    var v = $(this)
    .keyup(function(){
      if( typeof el == "undefined" )
      this.el = $(this);
      var s = getPasswordStrength (this.value);
      var p = this.percents;
      var t = Math.floor( s / p );

      if( 100 <= s )
      t = this.opts.classes.length - 1;

      this.div
      .removeAttr('class')
      .addClass( this.defaultClass )
      .addClass( this.opts.classes[ t ] );
    })
  });

  function getPasswordStrength(H){
    var N=0;
    var D=(H.length);
    if (D<6){D=0}
    if(D>5){D=5}
    var F=H.replace(/[0-9]/g,"");
    var G=(H.length-F.length);
    if(G==0)N-=20;
    if(G>3)G=3;
    var A=H.replace(/\W/g,"");
    var C=(H.length-A.length);
    if(C==0)N-=20;
    if(C>3)C=3;
    var B=H.replace(/[A-Z]/g,"");
    var U=(H.length-B.length);
    if(U==0)N-=20;
    if(U>3)U=3;
    if(/(19\d{2}|20\d{2})/g.test(H))N-=20;
    var E=((D*10)-20)+(G*10)+(C*15)+(U*10)+N;
    if(E<0){E=0}
    if(E>100){E=100}
    return E
  }
};
