$.fn.passwordStrength = function(names,width){
    return this.each(function(){
        var classes = new Array("psc_weak","psc_medium","psc_strong");
        var maxwid = $(this).width();
        var wid = Math.round(maxwid/3);
        
        $("<div />").addClass("psc").append(
            $("<ul />").append(
                $("<li />").addClass("psc_w").html(names[0]).width(wid)
            ).append(
                $("<li />").addClass("psc_m").html(names[1]).width(wid)
            ).append(
                $("<li />").addClass("psc_s").html(names[2]).width(maxwid-wid-wid)
            )
        ).appendTo($(this).parent());
        
        var obj = $(this).parent().children(".psc");
        $(this).keyup(function(){
            var v = $(this).val();
            
            if (v.length == 0)
            {
                obj.setOfClasses(3,classes);
            }
            else
            {
                var s = getPasswordStrength(v);
                if (s < 33)
                {
                    obj.setOfClasses(0,classes);
                }
                else if (s < 66)
                {
                    obj.setOfClasses(1,classes);
                }
                else
                {
                    obj.setOfClasses(2,classes);
                }
            }
        });
    });
};

$.fn.setOfClasses = function(clsid,classes){
    return this.each(function(){
        for (x in classes)
        {
            if (x == clsid) $(this).addClass(classes[x]);
            else $(this).removeClass(classes[x]);
        }
    });
};

function getPasswordStrength(H){
    var D=(H.length);
    
    if (D<4) { D=0 }
    
    
    if(D>5){
        D=5
    }
    var F=H.replace(/[0-9]/g,"");
    var G=(H.length-F.length);
    if(G>3){G=3}
    var A=H.replace(/\W/g,"");
    var C=(H.length-A.length);
    if(C>3){C=3}
    var B=H.replace(/[A-Z]/g,"");
    var I=(H.length-B.length);
    if(I>3){I=3}
    var E=((D*10)-20)+(G*10)+(C*15)+(I*10);
    if(E<0){E=0}
    if(E>100){E=100}
    return E
}
