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

// 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';
*/
function validateForm(form,specialfields) {
    var errors = new Array();
    var fields = form.getElementsByTagName('span');
    for (i = 0; i < fields.length; i++) {
        var span = fields[i].getElementsByTagName('label')[0];
        if (span && span.firstChild) {
            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 + '');
                    }
                    
                    // 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;
}

myObjects = new Object();

function showFormErrors (errors, form) {
    error_message = '';
        if (form){
            error_message = '<strong>ACHTUNG: Sie haben vergessen, folgende Daten anzugeben:</strong><ul>';
            for (i=0;i<errors.length;i++){
                    error_message += '<li>' + errors[i] + '</li>';
            }
            error_message += '</ul>';
            var formErrors = document.getElementById('formErrors');
            formErrors.style.display = 'block';
            formErrors.innerHTML = error_message;
            location.href='#formErrors';
        }else{
            for (i=0;i<errors.length;i++){
                    error_message += errors[i] + '\n';
            }
            alert(error_message);
        }
}


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";
    fenster = window.open(url, 'win', attrib);
    return false;
}

function initStartNav() {
    if($('nav')) {
        $('nav').style.height = '0px';
        $('nav').style.overflow = 'hidden';
        $('subtitle').style.bottom = '0px';
    } else {
        setTimeout('initStartNav()', 200);
    }
}

function startSliders() {
    var naveffect = $('nav').effects( {
        wait: false,
        duration: 2000,
        transition: Fx.Transitions.Quad.easeInOut
    }).set({height: '0'});

    var subtitleeffect = $('subtitle').effects( {
        wait: false,
        duration: 2000,
        transition: Fx.Transitions.Quad.easeInOut
    }).set({bottom: '0'});

    var children = $$('#nav li');

    var childcount = 0;
    children.each(function(el, i) {
        if(el.innerHTML != "" && el.parentNode.id == 'nav')
            childcount++;
    });

    var newheight = (childcount * 25) + 0;
    naveffect.start({'height':[0,newheight]});
    subtitleeffect.start({'bottom':[20,newheight+20]});
}

window.addEvent('domready', function() {
    if($('startpage'))
        initStartNav();
    else
        checkSubtitleSize();
});

window.addEvent('load', function() {
    if($('startpage'))
        startSliders();
});

function checkSubtitleSize() {
    if($('subtitle')) {
        $('subtitle').style.bottom = ($('navbox').offsetHeight+10) + 'px';
    } else {
        setTimeout('checkSubtitleSize()', 100);
    }
}

