function ShowGallery(id) {
    for(i=0;i<gallerypix.length;i++) {
        document.getElementById('galpic_'+gallerypix[i]).style.display = 'none';
        document.getElementById('galnav_'+gallerypix[i]).style.display = 'none';

    }

    document.getElementById('galpic_'+gallerypix[id]).style.display = 'block';
    document.getElementById('galnav_'+gallerypix[id]).style.display = 'block';

}

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

myObjects = new Object();

function showFormErrors (errors, form) {
    error_message = '';
        if (form){
            $(form);
            error_message = '<h2>Diese Felder müssen ausgefüllt werden:</h2><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 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 initNav() {
    if($('nav'))
    {
        navObjects = new Object();
        navObjects.nav = $('nav');
        navObjects.nav.items = $$('#nav li ul');
    counter = 0;
        navObjects.nav.items.each(function(item) {
            if(item.getParent().getParent().id == "nav") {
                item.id = 'navitemul' + counter;
                counter++;
                new initNavItemMenu(item);
            }
        });
    }
    else
    {
        setTimeout('initNav()', 100);
    }
}

var lastNavItemMenu = 0;
var sliders = new Object();
var activeMenuItem = 0;

function initNavItemMenu(navItemMenu) {
    var navItemMenuChildren, navItem, navItemSlideFx, navItemSlideObj, navItemCoords , navItemA, e, fxDuration;
    if (navItemMenu){
        navItemMenu.setStyle('visibility', 'visible');
        navItemMenuChildren = navItemMenu.getChildren();
        fxDuration = navItemMenuChildren.length * 90;
    sliders[navItemMenu.id] = new Fx.Slide(navItemMenu, {duration:fxDuration});
        navItemSlideFx = sliders[navItemMenu.id];
        navItemSlideFx.hide();
        navItemSlideObj = navItemMenu.getParent();
        navItem = navItemSlideObj.getParent();
        navItemA = $(navItem.getChildren()[0]);

    //fade in active menu
    if(getImage(navItem)) {
        if(getImage(navItem).src.indexOf('_h') > -1)
        {
            activeMenuItem = navItemMenu;
            fadeMeIn(navItemMenu);
        }
    }

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

        if(lastNavItemMenu != 0 && lastNavItemMenu != navItemMenu)
        {
            fadeMeOut(lastNavItemMenu);
            lastNavItemMenu = 0;
        }

        if(getImage(this))
        {
            getImage(this).style.borderBottom = '5px solid black';
            getImage(this).style.marginBottom = '0px';
            getImage(this).onmouseout = function() {};
        }
        });

        navItem.addEvent('mouseleave', function(event){
            e = new Event(event);
            e.stop();

        if(activeMenuItem != navItemMenu)
        {
            navItemA.removeClass('hover');
            navItemSlideFx.stop();
            navItemSlideFx.slideOut();

            removeBorders();

            fadeMeIn(activeMenuItem);
        }

        if(getImage(this))
        {
            if(getImage(this).src.indexOf('_h.png') > -1 && getImage(this).onmouseover != undefined)
            {
                getImage(this).src = getImage(this).src.replace('attr_captionactiveimage', 'attr_captionimage').replace('_h.png', '.png');
                getImage(this).style.borderBottom = '0px';
                getImage(this).style.marginBottom = '5px';
            }

            if(activeMenuItem == navItemMenu) {
                getImage(this).style.borderBottom = '0px';
                getImage(this).style.marginBottom = '5px';
            }
        }
        });
    }
}

function removeBorders()
{
        navObjects = new Object();
        navObjects.nav = $('nav');
        navObjects.nav.items = $$('#nav img');
        navObjects.nav.items.each(function(item){
        item.style.borderBottom = '0px';
        item.style.marginBottom = '5px';
        });
}

function fadeMeIn(navItemMenu)
{
    if(navItemMenu != 0)
    {
        navItemMenuChildren = navItemMenu.getChildren();
        fxDuration = navItemMenuChildren.length * 90;
        navItemSlideFx = sliders[navItemMenu.id];
        navItemSlideObj = navItemMenu.getParent();
        navItem = navItemSlideObj.getParent();
        navItemA = $(navItem.getChildren()[0]);

        navItemA.addClass('hover');
        navItemSlideFx.stop();
        navItemCoords = navItemMenu.getCoordinates();
        navItemSlideObj.style.width = navItemCoords.width + 'px';
        navItemSlideFx.slideIn();

        lastNavItemMenu = navItemMenu;

        if(getImage(navItem))
        {
            getImage(navItem).style.borderBottom = '5px solid black';
            getImage(navItem).style.marginBottom = '0px';
            getImage(navItem).onmouseout = function() {};
        }
    }
}

function fadeMeOut(navItemMenu)
{
    navItemMenuChildren = navItemMenu.getChildren();
    fxDuration = navItemMenuChildren.length * 90;
    navItemSlideFx = sliders[navItemMenu.id];
    navItemSlideObj = navItemMenu.getParent();
    navItem = navItemSlideObj.getParent();
    navItemA = $(navItem.getChildren()[0]);

    navItemA.removeClass('hover');
    navItemSlideFx.stop();
    navItemSlideFx.slideOut();

    removeBorders();

    if(getImage(navItem))
    {
        if(getImage(navItem).src.indexOf('_h.png') > -1 && getImage(navItem).onmouseover != undefined)
        {
            getImage(navItem).src = getImage(navItem).src.replace('attr_captionactiveimage', 'attr_captionimage').replace('_h.png', '.png');
            getImage(navItem).style.borderBottom = '0px';
            getImage(navItem).style.marginBottom = '5px';
        }
    }
}

function getImage(obj)
{
    return obj.getElementsByTagName('img')[0];
}

window.addEvent('domready', function() {
    initNav();
});
