/************** OPTIONAL EDIT BELOW THIS LINE  ***********************/
/************** User specified settings *******************/
// Validation settings
var minLength = 6;             // Minimum length of password
var goodLength = 8;            // Maximum length of password
var bestLength = 14;            // Maximum length of password
var maxLength = 32;            // Maximum length of password
var noSpecialChars = false;     // Sets if special characters (punctuation etc.) can be in password
var isPasswordRequired = true;  // Sets if the password is a required field
var showTip = true;             // Show a tip to users if their password is not perfect

// UI settings
var BackgroundColor = "#FFFFFF";     // Background color of validator 
var TextColor = "#E82300";           // Text color of validator 
var TextFontFamily = "Verdana,Arial"; // Font Family
var TextSize = "10px";               // Text font size
var TextBold = true;              // Is text bold?


/*************** End of user specified settings **********/
/*************** DO NOT EDIT BELOW THIS LINE ****************/


var tip = 'Wskaz�wki dotycz�ce w�a�ciwego tworzenia hase�.\\n Minimalna ilo�� znak�w : '+minLength+', maksymalna ilo�� znak�w : '+maxLength+'. \\nW zale�no�ci od tego jak du�o znak�w b�dzie zawiera�o has�o, tym bardziej bezpieczne b�dzie Twoje konto. \\nDu�ym atutem b�dzie zawarcie w ha�le du�ych liter i cyfr. ';

/************** Create the validator **************/
function createPasswordValidator(elementToValidate, lang)
{
	if(lang == 'en') {
		var strRequired = "";     								// Displays when nothing is entered & password is required
		var strTooShort = "too short";   						// Displays when password is less than minLength 
		var strTooLong = "too long";      						// Displays when password is too long
		var strSpecialChars = "Special characters not allowed"; // Displays when user enters special chars
		var strWeak = "weak strenght";       					// Displays when password is weak strength
		var strMedium = "medium strenght";   					// Displays when password is medium strength
		var strStrong = "perfect";          					// Displays when password is perfect
	} else {
		var strRequired = "";     								// Displays when nothing is entered & password is required
		var strTooShort = "Hasło za krótkie";   				// Displays when password is less than minLength 
		var strTooLong = "Hasło za długie";      				// Displays when password is too long
		var strSpecialChars = "Znaki specjalne zabronione";     // Displays when user enters special chars
		var strWeak = "Hasło zbyt proste";       				// Displays when password is weak strength
		var strMedium = "Hasło dobre";   						// Displays when password is medium strength
		var strStrong = "Hasło bardzo dobre";          			// Displays when password is perfect
	}
	
	// Initialise display
	var validatorStyle = '<style type="text/css"> .pwdvalid { background-color:'+BackgroundColor+'; color:'+TextColor+'; font-family:'+TextFontFamily+'; font-size:'+TextSize+';';
	if(TextBold)
		validatorStyle += 'font-weight: bold;';
	validatorStyle +='}</style>';
	document.write(validatorStyle);
	
	// Get the element to validate
	var elm;
	if(!(elm = document.getElementById(elementToValidate)))
	{
		alert('Password Validator could not find your password field identified by id='+elementToValidate);
		return;
	}
	
	// Create visual output
	var output = '<div id="_pwdvalid'+elementToValidate+'" class="pwdvalid">&nbsp;</div>';
	document.write(output);
	
	// Register event handlers
	// Use quirksmode idea for flexible registration by copying existing events
	// onKeyUp
	var oldEventCode = (elm.onkeyup) ? elm.onkeyup : function () {};
	elm.onkeyup = function () {oldEventCode(); validatePassword(elm.id, lang)};
	// onmouseout
	oldEventCode = (elm.onmouseout) ? elm.onmouseout : function () {};
	elm.onmouseout = function() {oldEventCode(); validatePassword(elm.id, lang)};
}

function validatePassword(elementToValidate, lang) 
{
	if(lang == 'en') {
		var strRequired = "";     								// Displays when nothing is entered & password is required
		var strTooShort = "too short";   						// Displays when password is less than minLength 
		var strTooLong = "too long";      						// Displays when password is too long
		var strSpecialChars = "Special characters not allowed"; // Displays when user enters special chars
		var strWeak = "weak strenght";       					// Displays when password is weak strength
		var strMedium = "medium strenght";   					// Displays when password is medium strength
		var strStrong = "perfect";          					// Displays when password is perfect
	} else {
		var strRequired = "";     								// Displays when nothing is entered & password is required
		var strTooShort = "Hasło za krótkie";   				// Displays when password is less than minLength 
		var strTooLong = "Hasło za długie";      				// Displays when password is too long
		var strSpecialChars = "Znaki specjalne zabronione";     // Displays when user enters special chars
		var strWeak = "Hasło zbyt proste";       				// Displays when password is weak strength
		var strMedium = "Hasło dobre";   						// Displays when password is medium strength
		var strStrong = "Hasło bardzo dobre";          			// Displays when password is perfect
	}
	
	document.getElementById('test').style.display="none";	
	var elm;
	if(!(elm = document.getElementById(elementToValidate)))
	{
		return;
	}
	var passwordDiv = document.getElementById("_pwdvalid"+elementToValidate);
	var passwordString = elm.value;
	if(passwordString.length == 0)
	{
		passwordDiv.innerHTML = strRequired;
		return;
	}
	if(passwordString.length < minLength)
	{
		passwordDiv.innerHTML = strTooShort;
		return;
	}
	if(passwordString.length > maxLength)
	{
		passwordDiv.innerHTML = strTooLong;
		return;
	}
	// Match special characters
	//if(passwordString.match(/\W/))
	//{
		//passwordDiv.innerHTML = strSpecialChars;
		//return;
	//}			
	var strength = 0;
	// Match upper case characters
	if(passwordString.match(/[a-z]/))
	{
		strength++;
	}
	// Match lower case characters
	if(passwordString.match(/[A-Z]/))
	{
		strength++;
	}
	// Match digits
	if(passwordString.match(/\d/))
	{
		strength++;
	}
	if(passwordString.length > bestLength)
	{
		passwordDiv.innerHTML = strStrong;
		return;
	}
	if(passwordString.length > goodLength)
	{
		passwordDiv.innerHTML = strMedium;
		return;
	}

	
	switch(strength)
	{
		case 1: passwordDiv.innerHTML = strWeak;
				displayTip(passwordDiv);
				break;
		case 2: passwordDiv.innerHTML = strMedium;
				displayTip(passwordDiv);
				break;
		case 3: passwordDiv.innerHTML = strStrong;
				break;
	}				
}
	
function displayTip(div)
{		
	// Show tip
	if(showTip) {
		document.getElementById('test').style.display="inline";		
		//div.innerHTML += '&nbsp;'+'<a href="javascript:alert(\''+tip+'\');" style="font-size:smaller; text-decoration: none">&nbsp;<img src="../_d/information.gif" border="0" valign="bottom"></a>';
	}
}

