		Message.load("pw_not_equal,pw_weak,user_missing", "intern.renew_passwort.");
	windowOnLoad.add("PasswortChecker.init()"); 
	
	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);

	}



	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=pwd;
		pwd2=pwd;
		grosseZeichen = "";
		sonderZeichen = "";
		zahlen = "";
		sum = 0;
		username = user;
	    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();

		
		
		sprach_arr	=	getSprachArr(lang);
		document.getElementById('pwStatus').style.paddingLeft	= "140px";
		if(sum >= 70 && similar && minLength && !pwAndUsername){
			document.getElementById('pwStatus').innerHTML	=	sprach_arr[3];
			document.getElementById('pwStatus').style.color = "#000O00";
			document.getElementById('pwStatus').style.backgroundImage="url(/img/very_strong.gif)";
		}
		else if(sum >= 50 && similar && minLength && !pwAndUsername){
			document.getElementById('pwStatus').innerHTML	=	sprach_arr[2];
			document.getElementById('pwStatus').style.color="#000000";
			document.getElementById('pwStatus').style.backgroundImage="url(/img/strong.gif)";
	
		}
		else if(sum >= 40 && similar ){
			document.getElementById('pwStatus').innerHTML	=	sprach_arr[1];
			document.getElementById('pwStatus').style.color= "#000000";
			document.getElementById('pwStatus').style.backgroundImage="url(/img/weak.gif)";
	
		}
		else if(sum < 40){
			document.getElementById('pwStatus').innerHTML	= sprach_arr[0];
			document.getElementById('pwStatus').style.color="#000000";
			document.getElementById('pwStatus').style.backgroundImage="url(/img/very_weak.gif)";
	
		}
		else
		{
			document.getElementById('pwStatus').innerHTML	=	sprach_arr[1];
			document.getElementById('pwStatus').style.color="#000000";
			
		    document.getElementById('pwStatus').style.backgroundImage="url(/img/weak.gif)";
	
			
		}
		
	}
	
	function getSprachArr(lang)
	{
		
		var	arr	=	new Array();
		switch(lang)
		
		{
			case 'pl'	:	arr[3]		=	"bardzo silne";
							arr[2]		=	"silny";
							arr[1]		=	"slaby";
							arr[0]		=	"bardzo slaby";
							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 'ru'	:	arr[3]		=	"очень сильная";
							arr[2]		=	"сильный";
							arr[1]		=	"слабый";
							arr[0]		=	"очень слабые";
							break;
			case 'it'	:	arr[3]		=	"molto forte";
							arr[2]		=	"forte";
							arr[1]		=	"debile";
							arr[0]		=	"molto debile";
							break;
			case 'nl'	:	arr[3]		=	"zeer sterke";
							arr[2]		=	"sterk";
							arr[1]		=	"zwak";
							arr[0]		=	"zeer zwak";
							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)
	{
		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);
		}
	}
	var PasswortChecker = {
		init:function(){
			$$("[name='passwort']").invoke("observe", "keyup", this.check);
			document.getElementById('pwStatus').style.height="20px";
			document.getElementById('pwStatus').style.width="280px";
			
			document.getElementById('pwStatus').style.backgroundRepeat="no-repeat";
		},
		check:function(){
			var formular = $("anmeldeForm");
			if(formular.username.value.length==0){
				Message.post("user_missing");
			}
			getSum(formular.passwort.value,formular.passwort.value,formular.username.value,LANG );
			
		},
		check_submit:function(){
			var formular = $("anmeldeForm");
			var flag=true;
			if(sum<40){
			 	Message.post("pw_weak");
				flag=false;
			}
			if(formular.passwort.value!=formular.passwort_wiederholen.value){
				
				Message.post("pw_not_equal");
				flag = false;
			}		
	        return flag;
		}
	}
	
	
