function qg_passChecker(pwInputfield, pwIndicatorColors, pwIndicatorfield){	
	
	if(pwInputfield==null){return false;}	
	var inputField = pwInputfield; //field where password is typed in
	var indicatorColors = pwIndicatorColors; //colors to indicate pw strength
	
	if(indicatorColors==null){
		indicatorColors = new Array('#FF807D','#FFEB7D','#FFB57D','#8DE492');
	}
	var indicatorField = pwIndicatorfield; //field eg <div>, <input> where to indicate the pw strength
	var securityLevels = new Array('low','medium','strong','very strong');
	
	/**
	 * set input field to indicator colors according to security level
	 */
	this._setIndicatorColor = function(security_level){
		inputField.setStyle('background', indicatorColors[security_level]);	
	}
	
	/**
	 * set security level indicator in indicatorField according to security level
	 */
	this._setIndicator = function(security_level){
		if(indicatorField == null){return false;}
		indicatorField.set('html',securityLevels[security_level]);	
	}
	
	/**
	 * check the complexity of an entered pw according to specified rules
	 */
	this.checkPasswordComplexity = function(){
		var pass = inputField.get('value');
		
		var lowercaseletter = /[a-z]/.test(pass);
		var uppercaseletter = /[A-Z]/.test(pass);
		var digit 			= /\d/.test(pass);
		var symbol			= /\W/.test(pass);
//		var symbol			= /[¬!"£$%^&*()`{}\[\]:@~;\'#<>?,.\/\\-_\|]/.test(pass);

		var low_security    = lowercaseletter || uppercaseletter || digit;
		var med_security    = (lowercaseletter && uppercaseletter) || 
							  (lowercaseletter && digit) || (lowercaseletter && symbol) ||
							  (digit && uppercaseletter) || (symbol && uppercaseletter);
		var high_security   = 	(lowercaseletter && uppercaseletter && digit && pass.length >= 6) || 
								(lowercaseletter && uppercaseletter && symbol && pass.length >= 6) ||
								(uppercaseletter && symbol && digit && pass.length >= 6) ||
								(lowercaseletter && digit && symbol && pass.length >= 6);
		var higher_security = 	(high_security && symbol && pass.length >= 8);

		var security_level = 0;
		
		if ( low_security ){}		
		if ( med_security ){ security_level = 1;}
		if ( high_security ){ security_level = 2;}
		if ( higher_security ){ security_level = 3;}

		this._setIndicatorColor(security_level);
		this._setIndicator(security_level);
		
		return security_level;
	}
	
	/**
	 * verify password strength against a defined level of minimum strength
	 */
	this.verifyPasswordStrength = function(acceptedLevel){
		if(this.checkPasswordComplexity() < acceptedLevel){return false;}
		return true;
	}
	
	
}
