	var kleineZeichen = "";
	var pwd1 = "";
	var pwd2 = "";
	var	grosseZeichen = "";
	var	sonderZeichen = "";
	var	zahlen = "";
	var minZeichenAnzahl = 6;
	var	sum = 0;
	var username = "";

	function anzUniqueValues(arr)
	{
		var anz				=	0;
		var durchlaufen_arr	=	new Array();
		
		for(var i = 0; i<arr.length; i++)
		{
			if(!durchlaufen_arr[arr[i]])
			{
				anz++;
				durchlaufen_arr[arr[i]] = true;
			}
		}
		
		return(anz);
	}
	


	function checkPasswordsSimilar()
	{
		if(pwd1 == pwd2){
			return true;
		}
		else
		{
			return false;
		}
	}
	
	function checkMinLength()
	{
		if(minZeichenAnzahl <= pwd1.length)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	
	function comparePwAndUsername()
	{
		username	=	new RegExp(username, "g");
		Ergebnis = pwd1.match(username);
		if (Ergebnis)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	
//Additions	
	function numberOfCaracters(){
		sum	=	sum+(pwd1.length*4);
	}
	
	function uppercaseLetters(){
	
		//Alle grossen Buchstaben
		var Ergebnis = pwd1.match(/[A-Z]/g);
		if (Ergebnis)
		{
			for(i = 0; i < Ergebnis.length; i++)
			{
				grosseZeichen	+=	Ergebnis[i];
			}
			if(grosseZeichen.length)
			{
				sum = sum+(((pwd1.length)-(grosseZeichen.length))*2);
			}
		}
	}
	
	function lowercaseLetters(){
	
		//Alle kleinen Buchstaben
		var Ergebnis = pwd1.match(/[a-z]/g);
		if (Ergebnis)
		{
			for(i = 0; i < Ergebnis.length; i++)
			{
				kleineZeichen	+=	Ergebnis[i];
			}
			if(kleineZeichen.length)
			{
				sum = sum+(((pwd1.length)-(kleineZeichen.length))*2);
			}
		}
	}

	function numbers(){
	
		//Alle numbers
		var Ergebnis = pwd1.match(/[0-9]/g);
		if (Ergebnis)
		{
			for(i = 0; i < Ergebnis.length; i++)
			{
				zahlen	+=	Ergebnis[i];
			}
			if(zahlen.length)
			{
				sum	=	sum+(zahlen.length*4);
			}
		}
	}
	
	function symbols(){

		//Alle sonderbuchstaben
		var Ergebnis = pwd1.match(/[\W|Ä|Ü|Ö|ä|ü|ö]/g);
		if (Ergebnis)
		{
			for(i = 0; i < Ergebnis.length; i++)
			{
				sonderZeichen	+=	Ergebnis[i];
			}
			if(sonderZeichen.length)
			{
				sum	=	sum+(sonderZeichen.length*6);
			}
		}
	}
	
	function requirements(){

		var i=0;
		if(kleineZeichen) i++;
		if(grosseZeichen) i++;
		if(sonderZeichen) i++;
		if(zahlen) i++;
		if(minZeichenAnzahl<= pwd1.length) i++;
		sum	=	sum + (i*2);

	}

//Deductions

	function lettersOnly(){

		if((grosseZeichen.length + kleineZeichen.length)>=pwd1.length)
		{
			sum	=	sum - pwd1.length*2;
		}

	}

	function numbersOnly(){

		if(zahlen.length==pwd1.length)
		{
			sum	=	sum - (pwd1.length*4);
		}

	}

	function specialOnly(){

		if(sonderZeichen.length==pwd1.length)
		{
			sum	=	sum - pwd1.length*6;
		}

	}
	
	function consecutiveLowercaseLetters(){
		
			//anzahl der hintereinander folgenden Grossbuchstaben minus 1 nehemen und dann addieren
		var anzahl = 0;
		var Ergebnis = pwd1.match(/[a-z]{1,}/g);
		if (Ergebnis)
		{
			for(i = 0; i < Ergebnis.length; i++)
			{
				anzahl	+=	Ergebnis[i].length-1;
			}
			if(anzahl)
			{
				sum = sum - anzahl*2;
			}
		}
	}
	
	function consecutiveUppercaseLetters(){
		
			//anzahl der hintereinander folgenden Kleinbuchstaben minus 1 nehemen und dann addieren
		var anzahl = 0;
		var Ergebnis = pwd1.match(/[A-Z]{1,}/g);
		if (Ergebnis)
		{
			for(i = 0; i < Ergebnis.length; i++)
			{
				anzahl	+=	Ergebnis[i].length-1;
			}
			if(anzahl)
			{
				sum = sum - anzahl*2;
			}
		}
	}
	
	function consecutiveNumbers(){
		
			//anzahl der hintereinander folgenden Kleinbuchstaben minus 1 nehemen und dann addieren
		var anzahl = 0;
		var Ergebnis = pwd1.match(/[0-9]{1,}/g);
		if (Ergebnis)
		{
			for(i = 0; i < Ergebnis.length; i++)
			{
				anzahl	+=	Ergebnis[i].length-1;
			}
			if(anzahl)
			{
				sum = sum - anzahl*4;
			}
		}
	}
	
	function consecutiveSymbols(){
		
			//anzahl der hintereinander folgenden Kleinbuchstaben minus 1 nehemen und dann addieren
		var anzahl = 0;
		var Ergebnis = pwd1.match(/[\W|Ä|Ü|Ö|ä|ü|ö]{1,}/g);
		if (Ergebnis)
		{
			for(i = 0; i < Ergebnis.length; i++)
			{
				anzahl	+=	Ergebnis[i].length-1;
			}
			if(anzahl)
			{
				sum = sum - anzahl*6;
			}
		}
	}
	
	function getSum(pwd, pwdwdh, user, lang)
	{

		kleineZeichen = "";
		pwd1 = document.getElementById(pwd).value;
		pwd2 = document.getElementById(pwd).value;
		grosseZeichen = "";
		sonderZeichen = "";
		zahlen = "";
		sum = 0;
		username = document.getElementById(user).value;


		numberOfCaracters();
		uppercaseLetters();
		lowercaseLetters();
		numbers();
		symbols();
		requirements();
		lettersOnly();
		numbersOnly();
		specialOnly();
		consecutiveLowercaseLetters();
		consecutiveUppercaseLetters();
		consecutiveNumbers();
		consecutiveSymbols();

		var minLength		=	checkMinLength();
		var pwAndUsername	=	comparePwAndUsername();
		var similar			=	true;
		var similar			=	checkPasswordsSimilar();

		var backgroundImage	=	(sum<=99) ? sum : 99;
		
		sprach_arr	=	getSprachArr(lang);
		
		if(document.getElementById('username').value	!=	"")
		{
			if(sum >= 80 && similar && minLength && !pwAndUsername){
				document.getElementById('pwStatus').innerHTML	=	sprach_arr[3];
				document.getElementById('pwStatus').style.backgroundPosition = "-" + parseInt(backgroundImage * 4) + "px";
			}
			else if(sum >= 60 && similar && minLength && !pwAndUsername){
				document.getElementById('pwStatus').innerHTML	=	sprach_arr[2];
				document.getElementById('pwStatus').style.backgroundPosition = "-" + parseInt(backgroundImage * 4) + "px";
			}
			else if(sum >= 40 && similar ){
				document.getElementById('pwStatus').innerHTML	=	sprach_arr[1];
				document.getElementById('pwStatus').style.backgroundPosition = "-" + parseInt(40 * 4) + "px";
			}
			else if(sum < 40){
				document.getElementById('pwStatus').innerHTML	=	sprach_arr[0];
				document.getElementById('pwStatus').style.backgroundPosition = "-" + parseInt(backgroundImage * 4) + "px";
			}
			else
			{
				document.getElementById('pwStatus').innerHTML	=	sprach_arr[1];
				document.getElementById('pwStatus').style.backgroundPosition = "-" + parseInt(40 * 4) + "px";
			}
			document.getElementById('username').className	=	"";
			document.getElementById('usernameEingeben').style.visibility		=	"hidden";
			document.getElementById('usernameEingeben').style.display			=	"none";
		}
		else if(document.getElementById('username').value	==	"")
		{
			document.getElementById('username').className	=	"error";
			document.getElementById('usernameEingeben').style.visibility		=	"visible";
			document.getElementById('usernameEingeben').style.display			=	"block";
		}
		
	}
	
	function getSprachArr(lang)
	{
		var	arr	=	new Array();
		switch(lang)
		{
			case 'pl'	:	arr[3]		=	"bardzo silne";
							arr[2]		=	"silny";
							arr[1]		=	"słaby";
							arr[0]		=	"bardzo słaby";
							break;
			case 'en'	:	arr[3]		=	"very strong";
							arr[2]		=	"strong";
							arr[1]		=	"weak";
							arr[0]		=	"very weak";
							break;
			case 'fr'	:	arr[3]		=	"très fort";
							arr[2]		=	"fort";
							arr[1]		=	"faible";
							arr[0]		=	"très faible";
							break;
			case 'es'	:	arr[3]		=	"muy fuerte";
							arr[2]		=	"fuerte";
							arr[1]		=	"débil";
							arr[0]		=	"muy débil";
							break;
			case 'ch'	:	arr[3]		=	"velmi silná";
							arr[2]		=	"silný";
							arr[1]		=	"slabý";
							arr[0]		=	"velmi slabá";
							break;
			case 'hr'	:	arr[3]		=	"vrlo jak";
							arr[2]		=	"jak";
							arr[1]		=	"slab";
							arr[0]		=	"vrlo slabo";
							break;
			default		:	arr[3]		=	"sehr stark";
							arr[2]		=	"stark";
							arr[1]		=	"schwach";
							arr[0]		=	"sehr schwach";
							break;
		}
		return(arr);
	}
	
	function passwordSubmit(lang)
	{
		/*
			Auf wunsch auskommentiert zu hart? 09.08.2010
		*/
		//sprach_array	=	getSprachArr(lang);
		//var status 		= 	document.getElementById('pwStatus').innerHTML;
		//if(status==sprach_array[0] || status==sprach_array[1])
		//{
			//alert(status);
			//return(false);
		//}
		//else
		//{
			return(true);
		//}
	}
