/*

Author: Sam Hampton-Smith
Site: http://www.hampton-smith.com
Credits:Inspiration/Code borrowed from Dave Lindquist (http://www.gazingus.org)
		Menu hide functionality was aided by some code I found on http://www.jessett.com/

*/

	var startzeit; var datum; var restzeit; var minuten; var sekunden;
	var akt_datum; var akt_zeit; var restzeit; var differenz;
	var ablaufzeit = 0;
	var currentMenu = null;
	var mytimer = null;
	var timerOn = false;
	var opera = window.opera ? true : false;
	
	datum = new Date();
	startzeit = datum.getTime();
	ablaufzeit = 1800;
	

	if (!document.getElementById)
		document.getElementById = function() { return null; }

	function initialiseMenu(menu, starter, root) {
//		var menuId = menu.attributes(0).value;
		var leftstarter = false;

		if (menu == null || starter == null) return;
			currentMenu = menu;

		starter.onmouseover = function() {
			if (currentMenu) {
				if (this.parentNode.parentNode!=currentMenu) {
					currentMenu.style.visibility = "hidden";


				}
				if (this.parentNode.parentNode==root) {
					tempCurrentMenu = currentMenu
					while (tempCurrentMenu.parentNode.parentNode!=root) {
						tempCurrentMenu.parentNode.parentNode.style.visibility = "hidden";
						tempCurrentMenu = tempCurrentMenu.parentNode.parentNode;
					}
				}
				currentMenu = null;
				this.showMenu();
	        	}
		}

		menu.onmouseover = function() {
			if (currentMenu) {
				currentMenu = null;
				this.showMenu();
	        	}
		}

		starter.showMenu = function() {
			if (!opera) {
				if (this.parentNode.parentNode==root) {
					menu.style.left = this.offsetLeft + "px";
					menu.style.top = this.offsetTop + this.offsetHeight + "px";
				}
				else {
				 	menu.style.left = this.offsetLeft + this.offsetWidth + "px";
				 	menu.style.top = this.offsetTop + "px";
				}
			}
			else {
				if (this.parentNode.parentNode==root) {
					menu.style.left = this.offsetLeft + "px";
					menu.style.top = this.offsetHeight + "px";
				}
				else {
				 	menu.style.left = this.offsetWidth + "px";
				 	menu.style.top = this.offsetTop + "px";
				}

			}
			menu.style.visibility = "visible";
			currentMenu = menu;
		}

		starter.onfocus	 = function() {
			starter.onmouseover();
		}

		menu.onfocus	 = function() {
//			currentMenu.style.visibility="hidden";
		}

		menu.showMenu = function() {
			menu.style.visibility = "visible";
			currentMenu = menu;
			stopTime();
		}

		menu.hideMenu = function()  {
			if (!timerOn) {
				mytimer = setInterval("killMenu('" + this.id + "', '" + root.id + "');", 100);
				timerOn = true;
				for (var x=0;x<menu.childNodes.length;x++) {
					if (menu.childNodes[x].nodeName=="LI") {
						if (menu.childNodes[x].getElementsByTagName("UL").length>0) {
							menuItem = menu.childNodes[x].getElementsByTagName("UL").item(0);
							menuItem.style.visibility = "hidden";
						}
					}
				}
			}
		}

		menu.onmouseout = function(event) {
			this.hideMenu();
		}

		starter.onmouseout = function() {
			for (var x=0;x<menu.childNodes.length;x++) {
				if (menu.childNodes[x].nodeName=="LI") {
					if (menu.childNodes[x].getElementsByTagName("UL").length>0) {
						menuItem = menu.childNodes[x].getElementsByTagName("UL").item(0);
						menuItem.style.visibility = "hidden";
					}
				}
			}
			menu.style.visibility = "hidden";
		}
}
	function killMenu(menu, root) {
		var menu = document.getElementById(menu);
		var root = document.getElementById(root);
		menu.style.visibility = "hidden";
		for (var x=0;x<menu.childNodes.length;x++) {
			if (menu.childNodes[x].nodeName=="LI") {
				if (menu.childNodes[x].getElementsByTagName("UL").length>0) {
					menuItem = menu.childNodes[x].getElementsByTagName("UL").item(0);
					menuItem.style.visibility = "hidden";
				}
			}
		}
		while (menu.parentNode.parentNode!=root) {
			menu.parentNode.parentNode.style.visibility = "hidden";
			menu = menu.parentNode.parentNode;
		}
		stopTime();
	}
	function stopTime() {
		if (mytimer) {
		 	 clearInterval(mytimer);
			 mytimer = null;
			 timerOn = false;
		}
	}

	window.onload = function() {
		var root = document.getElementById("menuList");
		getMenus(root, root);
	}

function getMenus(elementItem, root) {
	var selectedItem;
	var menuStarter;
	var menuItem;
	for (var x=0;x<elementItem.childNodes.length;x++) {
		if (elementItem.childNodes[x].nodeName=="LI") {
			if (elementItem.childNodes[x].getElementsByTagName("UL").length>0) {
				menuStarter = elementItem.childNodes[x].getElementsByTagName("A").item(0);
				menuItem = elementItem.childNodes[x].getElementsByTagName("UL").item(0);
				getMenus(menuItem, root);
				initialiseMenu(menuItem, menuStarter, root);
			}
		}
	}
}

function logout(){
	akt_datum = new Date();
	akt_zeit = akt_datum.getTime();
	differenz = Math.floor((akt_zeit - startzeit) / 1000); // in Sekunden
	restzeit = (ablaufzeit * 1000) - (akt_zeit - startzeit); // in ms
	if (restzeit >= 0){
	minuten = Math.floor(restzeit / (1000 * 60));
	sekunden = Math.floor((restzeit / 1000) - (minuten * 60));
	if (sekunden < 10) sekunden="0"+sekunden;
	window.status = "Autologout in: " + minuten + ":" + sekunden + " Minuten";
	setTimeout('logout()',1000);
	}else{window.status = "Du bist AUSGELOGGT.";}
}

function fenster(datei,breite,hoehe,x,y) {win = window.open(datei, "Popup", "width=" + breite+", height=" + hoehe+" resizable=no, left=" + x+", top=" + y); win.document.write("");}
function add(smile,form,id){window.document.forms[form].elements[id].value+=smile+" "; window.document.forms[form].elements[id].focus();}
function eingabe_check(){if (window.document.sbox.text_sb.value == 'Text'){javascript:window.document.sbox.text_sb.value='';}}


	function GetWidth(width,tmp,form,feld){
		var i,j,x,c,str,d,e;
		var str;
		d=document.forms[form].elements[feld];
		(document.all) ?
		e=document.all[tmp] :
		e=document.getElementById(tmp);
		e.innerHTML=d.value;
		breite=e.offsetWidth;
		str=d.value;
		str=str.replace(/\n/g," \n");
		x=str.length;
	    i=0;
	    j=1;
	    while ((j+i) < x){
			c = str.substr(j+i-1,1);
			if (c==' '){
				j=j+i;
				i=1;
			}else{
				e.innerHTML=str.substr(j,i);
				breite=e.offsetWidth;
				if (breite > width) {
					x=x+5;
					str=str.substr(0,j+i-1)+"-!@|+"+str.substr(j+i-1);
					j=j+i+4;
					i=1;
				}
				i=i+1;	
			}
	    }
		d.value = str;
	}
	function Check_Safety(text,subm){
		

		var len = text.length;
		var code=0,s=0,neg=0,lastc=0;
		var Bigs=0,Smal=0,Ints=0;
		var reg;
	  	for (var i = 0; i < len; ++i){
			code = text.charCodeAt(i);
			if (code > 64 && code < 91) {++Bigs;}
			if (code > 96 && code < 123){++Smal;}
			if (code > 47 && code < 58) {++Ints;}
			if (code == lastc) {neg = neg + 3;}
			lastc = code;
		}
		reg = text.match(/123/gi);if (reg){neg = neg + 30;}
		reg = text.match(/test/gi);if (reg){neg = neg + 30;}
		reg = text.match(/abc/gi);if (reg){neg = neg + 30;}
		reg = text.match(/asd/gi);if (reg){neg = neg + 10;}
		reg = text.match(/geheim/gi);if (reg){neg = neg + 30;}
		reg = text.match(/hallo/gi);if (reg){neg = neg + 25;}
		reg = text.match(/root/gi);if (reg){neg = neg + 15;}
		reg = text.match(/admin/gi);if (reg){neg = neg + 15;}
		reg = text.match(/qwer/gi);if (reg){neg = neg + 15;}
		reg = text.match(/666/gi);if (reg){neg = neg + 15;}
		reg = text.match(/xxx/gi);if (reg){neg = neg + 15;}
		reg = text.match(/pass/gi);if (reg){neg = neg + 15;}
		reg = text.match(/\d$/gi);if (reg){neg = neg + 5;}
		reg = text.match(/(19[0-9])|(20[0-9])[0-9]/gi);if (reg){neg = neg + 25;}
		reg = text.match(/(..)\1/gi);if (reg){neg = neg + 25;}
		s = len;
		if (Bigs > 0 && Smal > 0){s = s * 2.5;}
		if (Ints > 0){s = s * 2;}
		s = s - neg;
		if (s > 40){s=40;}
		if (s < 0) {s=0;}
		s = Math.floor(s*5);
		if (s > 193){s=193;}
		document.getElementById("stat").style.left = s+"px";
		var status = new Array(
			'<font color="#FF0000">Level 0 - Ungültig</font>',
			'<font color="#FF3300">Level 1 - Katastrophal Unsicher</font>',
			'<font color="#FF3300">Level 2 - Fatal Unsicher</font>',
			'<font color="#FF3300">Level 3 - Total Unsicher</font>',
			'<font color="#FF6600">Level 4 - Verdammt Unsicher</font>',
			'<font color="#FF9900">Level 5 - Unglaublich Unsicher</font>',
			'<font color="#FF9900">Level 6 - Sehr Unsicher</font>',
			'<font color="#FFCC00">Level 7 - Unsicher</font>',
			'<font color="#FFCC00">Level 8 - Ziemlich Unsicher</font>',
			'<font color="#FFFF00">Level 9 - Nicht Sicher</font>',
			'<font color="#FFFF00">Level 10 - Ungenügend Sicher</font>',
			'<font color="#FFFF00">Level 11 - Unzureichend Sicher</font>',
			'<font color="#CCFF00">Level 12 - Mangelhaft Sicher</font>',
			'<font color="#CCFF00">Level 13 - Aufbaubar Sicher</font>',
			'<font color="#99FF00">Level 14 - Annehmbar Sicher</font>',
			'<font color="#99FF33">Level 15 - Vertretbar Sicher</font>',
			'<font color="#66CC33">Level 16 - Genügend Sicher</font>',
			'<font color="#33CC33">Level 17 - Ausreichend Sicher</font>',
			'<font color="#00CC33">Level 18 - Zufriedenstellend Sicher</font>',
			'<font color="#00CC33">Level 19 - Ziemlich Sicher</font>'
		);
		
		var lev = Math.floor(s / 10);
		document.getElementById("savestat").innerHTML = status[lev];
		if (lev < 14 && subm==1){
			alert("Dieses Passwort ist nicht ausreichend sicher!\n\nBitte wähle mindestens ein Passwort Level 14!");
			return false;
		}
	}
	
	
	function display_box(id){
		obj0 = document.getElementById(id);
		obj1 = document.getElementById(id+"l");
		if (obj0.style.display == "none"){
			obj0.style.display = "block";
			obj1.innerHTML = "[<span class=\"display\">-</span>]";
		}else{
			obj0.style.display = "none";
			obj1.innerHTML = "[<span class=\"display\">+</span>]";
		}
					
	}

