$(document).ready(function() {
	$("a.tab").click(function () {
		$(".active").removeClass("active");
		$(this).addClass("active");
		$(".tabcontent").slideUp();
		var content_show = $(this).attr("title");
		$("#"+content_show).slideDown();
	});
	$("a.show").click(function(){
		var content_show = $(this).attr("title");
		$("#"+content_show).toggle();
		$("a.hide").toggle();
		$(this).toggle();
	});
	$("a.hide").click(function(){
		var content_hide = $(this).attr("title");
		$("#"+content_hide).slideUp();
		$("a.show").toggle();
		$(this).toggle();
	});

	$("div.show").click(function(){
		var toShow = $(this).attr('name');
		$('#'+toShow).toggle();
		$("[class~='hide'][name="+$(this).attr('name')+"]").toggle();
		$(this).toggle();
	});	

	$("div.hide").click(function(){
		var toHide = $(this).attr('name');
		$('#'+toHide).toggle();
		$("[class~='show'][name="+$(this).attr('name')+"]").toggle();
		$(this).toggle();
	});

		$("#textblock").live(
			'change', function() {
				var toLoad = 'http://www.model-universum.de/kartei.cgi?a=jx&c=txtblck&id='+$(this).attr('value');
				var toAppend = '#wysiwyg';
				$.get(
					toLoad, function(data) {
		        			var content = $(toAppend).val();
	       					$(toAppend).val(content+data);
					}
				);
			}
		);

		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 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--;}
  }
}

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 show_img_prev(id) {
	tt = document.getElementById(id);
	tt.style.display = "block"
}
function hide_img_prev() { tt.style.display = "none"; }

function showpos(e) {
	var s = e.selectionStart; /* Cursorposition */
	rows = new Array();
	rows = e.value.substring(0, s).split("\n"); /* Array mit Zeilen */
	var r = rows.length; /* Gesamtzahl Zeilen */
	z = rows[r-1].length; /* Letzte Zeile */
	document.forms['multi'].chars.value = 'Zeile: '+r+'\; Zeichen: '+z;
}

function swtch(divID, cls) {
	ts = document.getElementById(divID);
	ts.className = cls;
}
