window.addEvent('domready', domready);


function domready() {
    windowdomready = true;
    myObjects = new Object();
    initNav();
}

function initNav() {
    myObjects.nav = $('nav');
    myObjects.nav.items = $$('#nav li ul');
    myObjects.nav.items.each(function(item){
        new initNavItemMenu(item);
    });

}
function initNavItemMenu(navItemMenu) {
    var navItemMenuChildren, navItem, navItemSlideFx, navItemSlideObj, navItemCoords , navItemA, e, fxDuration;
    if (navItemMenu){
        navItemMenuChildren = navItemMenu.getChildren();
        fxDuration = navItemMenuChildren.length * 70;
        navItemSlideFx = new Fx.Slide(navItemMenu, {duration:fxDuration});
        navItemSlideObj = navItemMenu.getParent();
        navItem = navItemSlideObj.getParent();
        navItemA = $(navItem.getChildren()[0]);
        navItem.addEvent('mouseenter', function(event){
            e = new Event(event);
            navItemA.addClass('hover');
            navItemSlideFx.stop();
            navItemCoords = navItemMenu.getCoordinates();
            navItemSlideObj.style.width = navItemCoords.width + 'px';
            navItemSlideFx.slideIn();
            e.stop();
        });
        navItem.addEvent('mouseleave', function(event){
            e = new Event(event);
            navItemA.removeClass('hover');
            navItemSlideFx.stop();
            navItemSlideFx.slideOut();
            e.stop();
        });
    }
}


function getAdr(prefix, postfix, text) {
        document.write('<a href="mailto:' + prefix + '@' + postfix + '">' + (text ? text.replace(/&quot;/g, '"').replace(/%EMAIL%/, prefix + '@' + postfix) : prefix + '@' + postfix) + '</a>');
}

function swapImage(element, newimage) {
	var oldsrc = element.src
	element.src = newimage
	if (!element.onmouseout)
		element.onmouseout = function (event) { swapImage(this, oldsrc); };
}

var sel;
function HideSelects(x,y,w,h) {
	if(xIE4Up && !xMac) {
		var selx, sely, selw, selh, i
		if(!sel)
			sel = document.getElementsByTagName("SELECT");
		for(i = 0; i < sel.length; i++) {
			selx = xPageX(sel[i]);
			sely = xPageY(sel[i]);
			selw = sel[i].offsetWidth;
			selh = sel[i].offsetHeight;
			sel[i].style.visibility = (selx + selw > x && selx < x + w && sely + selh > y && sely < y + h) ? "hidden" : "visible";
		}
	}
}

/* Ändert die font-size des body Tags. D.h. alle Angaben die skaliert werden sollen müssen relativ (in %) angegeben werden */
var busywaiter = window.setInterval(function() {
	if (document.body) {
		window.clearInterval(busywaiter);
		var nameEQ = "fontsize=";
		var ca = document.cookie.split(';');
		for(var i=0; i < ca.length; i++) {
			var c = ca[i];
			while (c.charAt(0) == ' ') c = c.substring(1, c.length);
			if (c.indexOf(nameEQ) == 0) return document.body.style.fontSize = c.substring(nameEQ.length, c.length);
		}
	}
}, 50);

function changeFontSize(factor) {
	if (document.body.currentStyle)
		var fontsize = document.body.currentStyle['fontSize'];
	else if (window.getComputedStyle)
		var fontsize = document.defaultView.getComputedStyle(document.body, null).getPropertyValue('font-size');

	fontsize = /(\d+)(.+)/.exec(fontsize);
	document.body.style.fontSize = (parseInt(fontsize[1]) + factor) + fontsize[2];

	document.cookie = "fontsize=" + document.body.style.fontSize + "; path=/";
	
	setTimeout('document.getElementById(\'content\').innerHTML = document.getElementById(\'content\').innerHTML', 10);
}

function resetFontSize() {
	document.body.style.fontSize = '';

	document.cookie = "fontsize=;path=/";
	setTimeout('document.getElementById(\'content\').innerHTML = document.getElementById(\'content\').innerHTML', 10);
}

// deletes leading and trailing spaces in a string - adds the function directly to the String Object, so that all strings inherit this method
String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, '');
}

//checkEmail - needed for forms
function checkEmail(val) {
	if (val) {
		var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
		var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
		var regex = "^"+usr+"\@"+domain+"$";
		var myrxp = new RegExp(regex);
		var check = (myrxp.test(val));
		if (check!=true) {
			return false;
		}
		else {
			return true;
		}
	}
}

/*
validates formfields if they have a value or not
to check for other options do the following
specialfields = new Object();
specialfields.fieldname = new Object();
specialfields.fieldname.check1 = 'function_to_call,error_message';
specialfields.fieldname.check2 = 'second_function_to_call,second_error_message';
specialfields.another_fieldname = new Object();
specialfields.another_fieldname.check1 = 'function_to_call,error_message';
*//*-- validate form --*/
function validateForm(form,specialfields) {
	var errors = new Array();
	if($('form_inforequest')) {
		info_selected = false;
		infofields = form.getElementsByTagName('input');
	
		for (i=0;i<infofields.length;i++) {
			if (infofields[i].type.indexOf('checkbox') > -1 && infofields[i].checked) {
				info_selected = true;
			}
		}

		if  (!info_selected){
			errors.push('Bitte w&auml;hlen Sie ein oder mehrere Themen aus!');
		}
	}
	var fields = form.getElementsByTagName('span');
	for (i = 0; i < fields.length; i++) {
		var span = fields[i].getElementsByTagName('label')[0];
		if (span && span.firstChild) {
			if(span.firstChild.tagName == 'INPUT') {
				var label = span.childNodes[1].data;
			} else {
				var label = span.firstChild.data;
			}

			label = label.trim();
			if (label.charAt(label.length - 1) == '*') {
				label = label.substring(0, label.length - 1).trim();
				var obj_input = fields[i].getElementsByTagName('input');
				if (!obj_input[0])
					obj_input = fields[i].getElementsByTagName('select');
				if (!obj_input[0])
					obj_input = fields[i].getElementsByTagName('textarea');
				if (obj_input && obj_input[0]) {
					input = obj_input[0];
					error = false;
					if (!input.value || input.value.trim().length==0) {
						error = true;
						errors.push(label);
					}
					if (!error && specialfields[input.name]) {
						specialfield = specialfields[input.name];
						for (check in specialfield){
							check_function = specialfield[check].split(',')[0];
							check_message = specialfield[check].split(',')[1];
							if (!eval(check_function)(input.value)){
								error = true;
								errors.push(label + ' ' + check_message);
							}
						}
					}
					if (error) {
						className = fields[i].className;
						if (className.length>0){
							className = className + ' ';
						}
						fields[i].className = className + 'error';
					}
					else {
						className = fields[i].className;
						if (className.indexOf('error')>-1) {
							className = className.replace(' error', '');
							className = className.replace('error', '');
							fields[i].className = className;
						}
					}
				}
			}
		}
	}
	return errors;
}
myObjects = new Object();
function showFormErrors (errors, form) {
	error_message = '';
	if (form) {
		//$(form);
		error_message = '<strong>Diese Felder m&uuml;ssen ausgef&uuml;llt werden:</strong><ul>';
		for (i=0;i<errors.length;i++) {
			error_message += '<li>' + errors[i] + '</li>';
		}
		error_message += '</ul>';
		if (!myObjects.errorDiv) {
			myObjects.errorDiv = new Element('div', {'id':'formErrors'});
			myObjects.errorDiv.injectTop(form);
		}
		myObjects.errorDiv.innerHTML = error_message;
		location.href='#formErrors';
	}
	else {
		for (i=0;i<errors.length;i++) {
			error_message += errors[i] + '\n';
		}
	alert(error_message);
	}
}
























function initTips(){
    myObjects.definitionLinks = $$('a.definitionlink');
    myObjects.definitionTips = new Tips(myObjects.definitionLinks,
        {
            initialize:function() {
                this.toolTip.effects({wait:false}).set({'opacity':[0]});
            },
            onShow:function(toolTip) {
                toolTip.effects().stop();
                toolTip.effects({duration:200, wait:false}).start({'opacity':[1]});
            },
            onHide:function(toolTip) {
                toolTip.effects({duration:200, wait:false, onComplete:function(toolTip){
                    toolTip.setStyles({
                            'display': 'none'
                    });
                }}).start({'opacity':[0]});
            },
            className:'definitioninside',
            fixed:true
        }
    );
    myObjects.definitionTips.position = function(element) {
        this.toolTip.setStyles({'display':'block', 'top':0, 'left':0, 'width':'auto','height':'auto'});
        element.position = element.getPosition();
        
        this.toolTip.leftSided = (window.getWidth() - element.position.x) < element.position.x;
        this.toolTip.maxWidth = this.toolTip.leftSided ? (element.position.p - element.offsetWidth - 50) : (window.getWidth() - element.position.x - element.position.offsetWidth - 50);
        this.toolTip.coordinates = this.toolTip.getCoordinates();
        if (this.toolTip.coordinates.width > this.toolTip.maxWidth){
            this.toolTip.setStyle('width', this.toolTip.maxWidth + 'px');
            this.toolTip.coordinates = this.toolTip.getCoordinates();
        }
        
        if (element.position.y + this.toolTip.coordinates.height + this.options.offsets.y > window.getHeight()){
            this.toolTip.setTop = window.getHeight() - (this.toolTip.coordinates.height + this.options.offsets.y);
        }else{
            this.toolTip.setTop = element.position.y;
        }
        
        this.toolTip.setStyles({
                'left': element.position.x + element.offsetWidth + this.options.offsets.x,
                'top': this.toolTip.setTop
        });
    };
    myObjects.definitionLinks.each(function(item){
        item.onclick = function(){return false;};
    });
}

