/*******************************************************************************
 * usernamePasswordChecker
 * @author Team Webgalli 2009
 * @author Leo de Carvalho
 * @translation Facyla 2010 (2 strings : "Unsafe password word!" and "Too short")
 ******************************************************************************/
(function(A){
    A.extend(A.fn,{
        pstrength:function(MINC,VW,W,M,S,VS){
            var B=A.extend({
                verdects:[VW,W,M,S,VS],
                colors:["#f00","#c06","#f60","#3a0","#370"],
                scores:[10,15,30,40],
                common:["password","azerty","123456","qsdfgh","wxcvbn","motdepasse","formavia","qwerty","monkey"],
                minchar:6
            },B);
            return this.each(function(){
                var C=A(this).attr("id");
//                A(this).after("<div class=\"pstrength-minchar\" id=\""+C+"_minchar\">"+MINC+B.minchar+"</div>");  // Facyla : useless, using inline tips
                A(this).after("<div class=\"pstrength-info\" id=\""+C+"_text\"></div>");A(this).after("<div class=\"pstrength-bar\" id=\""+C+"_bar\" style=\"border: 1px solid white; font-size: 1px; height: 5px; width: 0px;\"></div>");
                A(this).keyup(function(){
                    A.fn.runPassword(A(this).val(),C,B)
                })
            })
        },
        runPassword:function(D,F,C){
            nPerc=A.fn.checkPassword(D,C);
            var B="#"+F+"_bar";var E="#"+F+"_text";
            if(nPerc==-200){strColor="#f00";
                strText="Mot de passe trop faible";
                A(B).css({width:"0%"})
            }else{
                if(nPerc<0&&nPerc>-199){
                    strColor="#f00";strText="Mot de passe trop court";
                    A(B).css({width:"5%"})
                }else{
                    if(nPerc<=C.scores[0]){
                        strColor=C.colors[0];
                        strText=C.verdects[0];
                        A(B).css({width:"10%"})
                    }else{
                        if(nPerc>C.scores[0]&&nPerc<=C.scores[1]){
                            strColor=C.colors[1];
                            strText=C.verdects[1];
                            A(B).css({width:"25%"})
                        }else{
                            if(nPerc>C.scores[1]&&nPerc<=C.scores[2]){
                                strColor=C.colors[2];
                                strText=C.verdects[2];
                                A(B).css({width:"50%"})
                            }else{
                                if(nPerc>C.scores[2]&&nPerc<=C.scores[3]){
                                    strColor=C.colors[3];
                                    strText=C.verdects[3];
                                    A(B).css({width:"75%"})
                                }else{
                                    strColor=C.colors[4];
                                    strText=C.verdects[4];
                                    A(B).css({width:"92%"})
                                }
                            }
                        }
                    }
                }
            }
            A(B).css({backgroundColor:strColor});
            A(E).html("<span style='color: "+strColor+";'>"+strText+"</span>")
        },
        checkPassword:function(C,B){
            var F=0;
            var E=B.verdects[0];
            if(C.length<B.minchar){F=(F-100)}
            else{
                if(C.length>=B.minchar&&C.length<=(B.minchar+2)){F=(F+6)}
                else{
                    if(C.length>=(B.minchar+3)&&C.length<=(B.minchar+4)){
                        F=(F+12)}
                    else{
                        if(C.length>=(B.minchar+5)){
                            F=(F+18)
                        }
                    }
                }
            }
            if(C.match(/[a-z]/)){F=(F+1)}
            if(C.match(/[A-Z]/)){F=(F+5)}
            if(C.match(/\d+/)){F=(F+5)}
            if(C.match(/(.*[0-9].*[0-9].*[0-9])/)){F=(F+7)}
            if(C.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)){F=(F+5)}
            if(C.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){F=(F+7)}
            if(C.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){F=(F+2)}
            if(C.match(/([a-zA-Z])/)&&C.match(/([0-9])/)){F=(F+3)}
            if(C.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)){F=(F+3)}
            for(var D=0;D<B.common.length;D++){
                if(C.toLowerCase()==B.common[D]){F=-200}
            }
            return F
        }
    })
})(jQuery)
