/* mootools extensions */
Element.extend({
    hasClasses: function(classList, all) {
        var oneTrue = false;
        var allTrue = true;
        var element = this;
        classList.each(function(item){
            item = item.trim();
            classTrue = element.hasClass(item);
            if (classTrue){
                oneTrue = true;
            }else{
                allTrue = false;
            }
        });
        return all ? allTrue : oneTrue;
    }
});

window.addEvent('domready', domready);

function domready() {
    myObjects = new Object();
    initNav();
    initFontsizeHandler();
}

function initNav(){
    myObjects.topnav = $('topnav');
    if (myObjects.topnav){
        myObjects.topnav.items = $$('#topnav li ul');
        myObjects.topnav.items.each(function(item){
            new initNavItemMenu(item);
        });
    }
}

function initNavItemMenu(navItemMenu) {
    var navItemMenuChildren, navItem, img, oldover, oldout;
    if (navItemMenu){
        navItem = navItemMenu.getParent();
        img = navItem.getElement('img');
        if (img && img.onmouseover){
            oldover = img.onmouseover;
            img.onmouseover = function(){};
        }
        navItem.addEvent('mouseenter', function(){
            if (oldover) {
                oldover.apply(img, arguments);
                oldout = img.onmouseout;
                img.onmouseout = function(){};
            }
            navItem.addClass('hover');
        });
        navItem.addEvent('mouseleave', function(){
            this.removeClass('hover');
            if (oldout){
                oldout.apply(img, arguments);
                img.onmouseover = function(){};
            }
        });
    }
}

function hideSelectBoxes(){
    selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "hidden";}
}

function showSelectBoxes(){
    selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "visible";}
}

function initFontsizeHandler() {
    myObjects.fontsizeHandler = $('fontsizeHandler');
    if (myObjects.fontsizeHandler){
        myObjects.fontsizeHandlerLinks = myObjects.fontsizeHandler.getElements('a');
        fontSizes = new Object();
        myObjects.fontsizeHandlerLinks.each(function(item){
            fontSizes[parseInt(item.rel)] = item;
            item.addEvent('click', function(e){
                new Event(e).stop();
                changeFontSize(parseInt(this.rel));
            });
        });
        var fontSize = Cookie.get('fontSize');
        var currentFontSize = parseInt(getCurrentFontSize()[1]);
        if (fontSize){
            fontSize = parseInt(fontSize);
            if (!fontSizes[fontSize]){
                fontSize = currentFontSize;
            }
        }else {
            fontSize = currentFontSize;
        }
        fontSizeLinksActiveHandler(fontSize);
        if (fontSize != currentFontSize){
            changeFontSize(fontSize);
        }
    }
}

function getCurrentFontSize() {
    if (document.body.currentStyle)
        var currentFontSize = document.body.currentStyle['fontSize'];
    else if (window.getComputedStyle)
        var currentFontSize = document.defaultView.getComputedStyle(document.body, null).getPropertyValue('font-size');
    return /(\d+)(.+)/.exec(currentFontSize);
}

function changeFontSize(fontSize) {
    document.body.style.fontSize = fontSize + 'px';
    Cookie.set('fontSize', fontSize, {path:'/'});
    if (window.ie){
        fontSizeLinksActiveHandler(fontSize);
    }else{
        setTimeout('document.body.innerHTML = document.body.innerHTML; domready();', 100);
    }
}

function fontSizeLinksActiveHandler(fontSize){
    myObjects.fontsizeHandlerLinks.each(function(item){
        if (!item.oldover){
            item.oldover = item.onmouseover;
            item.oldout = item.onmouseout;
        }
        if (fontSize == parseInt(item.rel)){
            item.onmouseover = '';
            item.onmouseout = '';
            item.oldover.apply(item, arguments);
        }else{
            item.oldout.apply(item, arguments);
        }
    });
}

function ShowHide(layID) {
	var myLayer = document.getElementById(layID);
	if (myLayer.style.display=="none") {
		myLayer.style.display="";
		} else {
		myLayer.style.display="none";
	}
}

function js_resize(){
	if (window_loaded){
		var sitepic = document.getElementById('sitepic')
		var content_bg = document.getElementById('content_bg')
		var subnav_bg = document.getElementById('subnav_bg')

		if(sitepic && subnav_bg && content_bg)
		{
			if (document.body.offsetHeight < 585)
			{
				subnav_bg.style.bottom='230px'
				content_bg.style.height='113px'
				sitepic.style.height='127px'
			} else {
				subnav_bg.style.bottom='320px'
				content_bg.style.height='203px'
				sitepic.style.height='217px'
			}
		}
	}
}

function swapImage(element, newimage, direction) {
    var oldsrc = element.src
	element.src = newimage
	if (direction){
		element.onmouseout = null
		element.onmouseover = function (event) { swapImage(this, oldsrc); }
	}
	else{
		element.onmouseover = null;
		element.onmouseout = function (event) { swapImage(this, oldsrc, 1); }
	}
}

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 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;
		}
	}
}


function popup(url,typ,para1,width,height)
{
	attrib = "";
	Y = (screen.height - width) / 2;
	X = (screen.width - height) / 2;
	X = Math.round(X);
	Y = Math.round(Y);
	if (para1 == 'CENTER') {attrib += 'height=' + height + ',width=' + width + ',top=' + Y + ',left=' + X;}
	if (typ == 'TYP1') {attrib += ",scrollbars=no";}
	if (typ == 'TYP2') {attrib += ",scrollbars=yes";}
	if (typ == 'TYP3') {attrib += ",scrollbars=yes,menubar=yes";}
	x = Math.random();
	fenster = window.open(url, 'win', attrib);
	return false;
}

function js_popup_image(image, image_width, image_height) {
	window_width = image_width + 'px';
	window_height = image_height + 'px';
	window.open(image,'_blank','location=no,menubar=no,resizable=no,status=no,toolbar=no,dependent=yes,scrollbars=yes,width=' + window_width + ',height=' + window_height);
}

function judf_link_gifchange(obj,over){
    if (obj){
        obj_img = obj.getElementsByTagName('IMG')[0];
        file = obj_img.src;
        tmp_img= new Image();
        if (over){
            tmp_img.src = file.replace(/2*\.gif/,'2.gif');
        }else{
            tmp_img.src = file.replace(/2*\.gif/,'.gif');
        }
        obj_img.src = tmp_img.src;
    }
}


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';
*/
function validateForm(form,specialfields) {
	var errors = new Array();
	var fields = form.getElementsByTagName('label');
	for (i = 0; i < fields.length; i++) {
		var span = fields[i].getElementsByTagName('span')[0];
		if (span) {
			var label = span.firstChild.data;
			label = label.trim();
			// if there is a '*' in the label - this indicates the inputfield has to be filled
			if (label.charAt(label.length - 1) == '*'){
                                label = label.substring(0, label.length - 1).trim();
				// get the inputfield
				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 there is an inputfield
				if (obj_input && obj_input[0]) {
					input = obj_input[0];
					error = false;
					
					// check if the inputfield has a value
					if (!input.value || input.value.trim().length==0) {
						error = true;
						errors.push(label + ' nicht eingegeben');
					}
					
					// check the inputfield for special things (email, ...)
					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);
							}
						}
					}
		            
					// on error give the label the className 'error' otherwise delete the className 'error' (if exists)
					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;
}

function showFormErrors (errors) {
	error_message = '';
	for (i=0;i<errors.length;i++){
		error_message += errors[i] + '\n';
	}
	alert(error_message);
}
	
function gallery_open(galleryurl) {
    standardWidth = 500;
    standardHeight = 400;
    optionstring = 'width=' + standardWidth + ',height=' + standardHeight + ',resizable=yes';
    window.open(galleryurl,'gallery',optionstring);
}


