﻿//密码强度;
function PasswordStrength(showed) {
    this.showed = (typeof (showed) == "boolean") ? showed : true;
    this.styles = new Array();
    this.styles[0] = { backgroundColor: "#EBEBEB", borderLeft: "solid 1px #FFFFFF", borderRight: "solid 1px #BEBEBE", borderBottom: "solid 1px #BEBEBE" };
    this.styles[1] = { backgroundColor: "#FF4545", borderLeft: "solid 1px #FFFFFF", borderRight: "solid 1px #BB2B2B", borderBottom: "solid 1px #BB2B2B" };
    this.styles[2] = { backgroundColor: "#FFD35E", borderLeft: "solid 1px #FFFFFF", borderRight: "solid 1px #E9AE10", borderBottom: "solid 1px #E9AE10" };
    this.styles[3] = { backgroundColor: "#95EB81", borderLeft: "solid 1px #FFFFFF", borderRight: "solid 1px #3BBC1B", borderBottom: "solid 1px #3BBC1B" };

    this.labels = ["弱", "中", "强"];

    this.divName = "pwd_div_" + Math.ceil(Math.random() * 100000);
    this.minLen = 4;

    this.width = "150px";
    this.height = "16px";

    this.content = "";

    this.oDiv = $("#divPwd");

    this.selectedIndex = 0;
    this.init();
}
PasswordStrength.prototype.init = function() {
    if (this.showed) {
        this.copyToStyle(this.selectedIndex);
    }
}
PasswordStrength.prototype.copyToObject = function(o1, o2) {
    for (var i in o1) {
        o2[i] = o1[i];
    }
}
PasswordStrength.prototype.copyToStyle = function(id) {
    this.selectedIndex = id;
    this.content = "";
    for (var i = 0; i < 3; i++) {
        if (i == id - 1) {
            switch (i) {
                case 0:
                    this.content = "<img src=\"../images/register_icon1.gif\" alt=\"弱\" />";
                    break;
                case 1:
                    this.content = "<img src=\"../images/register_icon2.gif\" alt=\"中\" />";
                    break;
                case 2:
                    this.content = "<img src=\"../images/register_icon3.gif\" alt=\"强\" />";
                    break;
                default:
                    this.content = "密码由至少4位字符组成";
            }
        }


        //         else {
        //            this.$(this.divName + "_label_" + i).style.display = "none";
        //        }
    }
    $("#divPwd").html(this.content);
    //    for (var i = 0; i < id; i++) {
    //        this.copyToObject(this.styles[id], this.$(this.divName + "_td_" + i).style);
    //    }
    //    for (; i < 3; i++) {
    //        this.copyToObject(this.styles[0], this.$(this.divName + "_td_" + i).style);
    //    }
}
PasswordStrength.prototype.$ = function(s) {
    return document.getElementById(s);
}
PasswordStrength.prototype.setSize = function(w, h) {
    this.width = w;
    this.height = h;
}
PasswordStrength.prototype.setMinLength = function(n) {
    if (isNaN(n)) {
        return;
    }
    n = Number(n);
    if (n > 1) {
        this.minLength = n;
    }
}
PasswordStrength.prototype.setStyles = function() {
    if (arguments.length == 0) {
        return;
    }
    for (var i = 0; i < arguments.length && i < 4; i++) {
        this.styles[i] = arguments[i];
    }
    this.copyToStyle(this.selectedIndex);
}
PasswordStrength.prototype.write = function(s) {
    if (this.showed) {
        return;
    }
    var n = (s == 'string') ? this.$(s) : s;
    if (typeof (n) != "object") {
        return;
    }
    n.innerHTML = this.content;
    this.copyToStyle(this.selectedIndex);
}
PasswordStrength.prototype.update = function(s) {
    if (s.length < this.minLen) {
        this.copyToStyle(0);
        return;
    }
    var ls = -1;
    if (s.match(/[a-z]/ig)) {
        ls++;
    }
    if (s.match(/[0-9]/ig)) {
        ls++;
    }
    if (s.match(/(.[^a-z0-9])/ig)) {
        ls++;
    }
    if (s.length < 6 && ls > 0) {
        ls--;
    }
    switch (ls) {
        case 0:
            this.copyToStyle(1);
            break;
        case 1:
            this.copyToStyle(2);
            break;
        case 2:
            this.copyToStyle(3);
            break;
        default:
            this.copyToStyle(0);
    }
}