    
    var minpwlength = 4;
    var fairpwlength = 7;
    
    var STRENGTH_SHORT = 0;  // less than minpwlength
    var STRENGTH_WEAK = 1;  // less than fairpwlength
    var STRENGTH_FAIR = 2;  // fairpwlength or over, no numbers
    var STRENGTH_STRONG = 3; // fairpwlength or over with at least one number
    
    img0 = new Image();
    img1 = new Image();
    img2 = new Image();
    img3 = new Image();
    
    img0.src = 'pic/ratings/password_strength/tooshort.gif';
    img1.src = 'pic/ratings/password_strength/fair.gif';
    img2.src = 'pic/ratings/password_strength/medium.gif';
    img3.src = 'pic/ratings/password_strength/strong.gif';
    
    var strengthlevel = 0;
    var strengthimages = Array( img0.src,
                                img1.src,
                                img2.src,
                                img3.src );
    function updatestrength( pw ) {
    
        if( istoosmall( pw ) ) {
            strengthlevel = STRENGTH_SHORT;
        }
        else if( !isfair( pw ) ) {
            strengthlevel = STRENGTH_WEAK;   
        }    
        else if( hasnum( pw ) ) {    
            strengthlevel = STRENGTH_STRONG;    
        }
        else {   
            strengthlevel = STRENGTH_FAIR;  
        }  
        document.getElementById( 'strength' ).src = strengthimages[ strengthlevel ];  
    }
    
    function isfair( pw ) {
        if( pw.length < fairpwlength ) {  
            return false; 
        }
        else {   
            return true;    
        }    
    }
    
    function istoosmall( pw ) {   
        if( pw.length < minpwlength ) {   
            return true;    
        }
        else {    
            return false;
        }    
    }
    
    function hasnum( pw ) {    
        var hasnum = false;    
        for( var counter = 0; counter < pw.length; counter ++ ) {   
            if( !isNaN( pw.charAt( counter ) ) ) {   
                hasnum = true;   
            }  
        }      
        return hasnum;    
    }