$(document).ready(function() {


/* Reiterleiste */
	$("a.tab").click(function () {
		$(".active").removeClass("active");
		$(this).addClass("active");
		$(".tabcontent").slideUp();
		var content_show = $(this).attr("title");
		$("#"+content_show).slideDown();
	});

		var strPassword;
		var charPassword;
		var complexity = $("#complexity");
		var inputPw = $("#password");
		var minPasswordLength = 5;
		var baseScore = 0, score = 0;
	
		var num = {};
		num.Excess = 0;
		num.Upper = 0;
		num.Numbers = 0;
		num.Symbols = 0;

		var bonus = {};
		bonus.Excess = 3;
		bonus.Upper = 4;
		bonus.Numbers = 5;
		bonus.Symbols = 5;
		bonus.Combo = 0; 
		bonus.FlatLower = 0;
		bonus.FlatNumber = 0;

		outputResult();
		$("#password").bind("keyup", checkVal);

		function checkVal() {
			init();
			if (charPassword.length >= minPasswordLength) {
				baseScore = 50;	
				analyzeString();	
				calcComplexity();		
			} else { baseScore = 0; }
			outputResult();
		}

		function init() {
			strPassword = $("#password").val();
			charPassword = strPassword.split("");
			num.Excess = 0;
			num.Upper = 0;
			num.Numbers = 0;
			num.Symbols = 0;
			bonus.Combo = 0; 
			bonus.FlatLower = 0;
			bonus.FlatNumber = 0;
			baseScore = 0;
			score = 0;
		}

		function analyzeString () {	
			for (i=0; i<charPassword.length;i++) {
				if (charPassword[i].match(/[A-Z]/g)) {num.Upper++;}
				if (charPassword[i].match(/[0-9]/g)) {num.Numbers++;}
				if (charPassword[i].match(/(.*[!,@,#,$,%,^,&,*,?,_,~])/)) {num.Symbols++;} 
			}
			num.Excess = charPassword.length - minPasswordLength;
			if (num.Upper && num.Numbers && num.Symbols) { bonus.Combo = 25; }
			else if ((num.Upper && num.Numbers) || (num.Upper && num.Symbols) || (num.Numbers && num.Symbols)) { bonus.Combo = 15; }
			if (strPassword.match(/^[\sa-z]+$/)) { bonus.FlatLower = -15; }
			if (strPassword.match(/^[\s0-9]+$/)) { bonus.FlatNumber = -35; }
		}

		function calcComplexity() {
			score = baseScore + (num.Excess*bonus.Excess) + (num.Upper*bonus.Upper) + (num.Numbers*bonus.Numbers) + (num.Symbols*bonus.Symbols) + bonus.Combo + bonus.FlatLower + bonus.FlatNumber;
		}

		function outputResult() {
			if ($("#password").val()== "") { 
				complexity.html("Case-Sensitive, 5 bis 15 Zeichen");
				inputPw.removeClass("weak strong stronger strongest");
			} else if (charPassword.length < minPasswordLength) {
				complexity.html("Bitte mindestens " + minPasswordLength + " Zeichen.");
				inputPw.removeClass("strong stronger strongest").addClass("weak");
			} else if (score<50) {
				complexity.html("Schwaches Passwort");
				inputPw.removeClass("strong stronger strongest").addClass("weak");
			} else if (score>=50 && score<75) {
				complexity.html("Durschnittlich starkes Passwort");
				inputPw.removeClass("stronger strongest").addClass("strong");
			} else if (score>=75 && score<100) {
				complexity.html("Starkes Passwort");
				inputPw.removeClass("strongest").addClass("stronger");
			} else if (score>=100) {
				complexity.html("Sicheres Passwort");
				inputPw.addClass("strongest");
			}
		}

});




function chsigns(elem, allowed) {
  n = 0;
  newtext = '';
  while(n != elem.value.length) {
    char = elem.value.charAt(n);
    check = char.toLowerCase();
    if(allowed.indexOf(check) != -1) {
      newtext = newtext+char;
    }
    n++;
  };
  elem.value = newtext;
};


function cnfrm(com, txt, fname) {
  if (fname == null) { fname = 'multi'; }
  if (txt == null) { txt = 'Bist Du sicher?'; }
  if (confirm(txt)) {
    if (com) { document.forms[fname].c.value = com; }
    document.forms[fname].submit();
  } else { return false; }
}

function cnfrmlnk(lnk, txt, tgt) {
  if (txt == null) { txt = 'Bist Du sicher?'; }
  if (confirm(txt)) {
    if (tgt == null) { top.window.location = lnk; }
    else if (tgt == "self") { window.location = lnk; }
    else {
      window.open(lnk);
      setTimeout(top.window.location.reload(true), 3000);
    }
  }
}

function insertTab(o, e) {
	var kC = e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which;
	if (kC == 9 && !e.shiftKey && !e.ctrlKey && !e.altKey) {
		var oS = o.scrollTop;
		if (o.setSelectionRange) {
			var sS = o.selectionStart;
			var sE = o.selectionEnd;
			o.value = o.value.substring(0, sS) + "\t" + o.value.substr(sE);
			o.setSelectionRange(sS + 1, sS + 1);
			o.focus();
		} else if (o.createTextRange) {
			document.selection.createRange().text = "\t";
			e.returnValue = false;
		}
		o.scrollTop = oS;
		if (e.preventDefault) { e.preventDefault(); }
		return false;
	}
	return true;
}

function log_out() {
	ht = document.getElementsByTagName("body");
	ht[0].style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)";
	if (confirm('Möchtest Du Dich wirklich ausloggen?')) { return true; }
	else {
		ht[0].style.filter = "";
		return false;
	}
}

var targetWidth = 600;
var originalWidth = 0;
var originalHeight = 0;
var isscaled = false;

function scale() {
	var targetpic = document.getElementById('image');
	if (isscaled) {
		targetpic.width = originalWidth;
		targetpic.height = originalHeight;
		isscaled = false;
	} else {
		if (targetpic.width > targetWidth) {
			originalWidth = targetpic.width;
			originalHeight = targetpic.height;
			targetpic.width = targetWidth;
			targetpic.height = Math.ceil(targetWidth*(originalHeight/originalWidth));
			isscaled = true;
		}
	}
}

function slct_all(fname) {
  if (fname == null) { fname = 'multi'; }
  var mf = document.forms[fname];
  var len = mf.elements.length;
  for (var i = 0; i < len; i++) {
    var e = mf.elements[i];
    if ((e.type == "checkbox") && (e.name != "switcher")) {
      if (e.checked != mf.switcher.checked){
        e.checked = mf.switcher.checked;
        slct(e, fname);
      }
    }
  }
}

function slct(e, fname){
  if (fname == null) { fname = 'multi'; }
  var tr = null;
  if (e.parentNode.parentNode){tr = e.parentNode.parentNode;}
  else if (e.parentElement.parentElement){tr = e.parentElement.parentElement;}
  if (tr){
    if(e.checked){document.forms[fname].num_sel.value++;}
    else {document.forms[fname].num_sel.value--;}
  }
}

/* Rollover-Bilder */
function show_img_prev(id) {
	tt = document.getElementById(id);
	tt.style.display = "block"
}
function hide_img_prev() { tt.style.display = "none"; }

function swtch(divID, cls) {
	$("#"+divID).addClass(cls);
}
