function passwordStrength(pass, login) {
	var minLength = 4;
	
	var smallcaps	= pass.match(/[a-z]/g);
	var largecaps	= pass.match(/[A-Z]/g);
	var digits		= pass.match(/[0-9]/g);
	var scc			= smallcaps != null ? smallcaps.length : 0;
	var lcc			= largecaps != null ? largecaps.length : 0;
	var dic			= digits != null ? digits.length : 0;
	var spc			= pass.length - scc - lcc - dic;
	var mcc			= Math.min(scc, lcc);
	var strength	= pass.length - minLength;
	var repeats		= countRepeats(pass);
	
	
	if(mcc > 0) strength *= mcc > 1 ? 1.5 : 1.25;
	if(dic > 0) strength *= dic > 1 ? 1.5 : 1.25;
	if(spc > 0) strength *= dic > 1 ? 1.5 : 1.25;
	
	if( repeats > 0 ){
		strength *= Math.pow(0.5, repeats);
	}
	if(pass.indexOf(login) >= 0) {
		strength *= 0.1;
	}
	
	return strength;
}

function countRepeats(txt) {
	var repeats = 0;
	var tmp     = '';
	for(var i = 0; i < txt.length; i++ ) {
	var l = txt.charAt( i );
		if( tmp.indexOf( l ) >= 0 ) {
	    	repeats++;
		}
		tmp += l;
	}
	return repeats;
}

function checkMyPassword() {
	var minLength	= 4;
	var maxLength	= 20-minLength;
	var maxStrength	= maxLength*1.5*1.5*1.5;
	
	var v = $(this).val();
	var l = v.length;
	var s = 0;
	if( l >= minLength ) {
		s = Math.min( 1,passwordStrength ( v, $('#username').val() ) / maxStrength );
		//		console.log(s);
		s = Math.pow( s, 0.2 );
		//		console.log(s);
		s = Math.round( s * 100 );
	}
	checkMyPassword.indicator.css('width', s + '%' );
}

/**
 * podpina passwordcheckera
 * @param {Object} opts - input:$(_input_), indicator:$(_wskaznik_sily_)
 */
function passwordChecker(opts){
	if(!opts.input || !opts.indicator) return false;
	checkMyPassword.indicator = opts.indicator;
	opts.input.keyup( checkMyPassword );
	opts.input.keyup();
	return true;
}