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){
            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 initSliders() {
    var slide = $('#imgbar').slider({
        animate: true,
        change: sliderEvent,
        slide: sliderEvent
    });
    slide.slider('option', 'value', Math.floor(Math.random()*100));
}  

function sliderEvent(event, ui) {
    var images = $('#headimg a');
    var image = $('#headimg img')[0];
    image.src = images[Math.floor((images.length-1)*ui.value/100)].href;
}

    function slideshow() {
        var item_counter=0;
        var lock=false;
        
        $('.slideshow_item').each(function(){
            $(this).hide();
            item_counter++;
        });
        $('.slideshow_sujet').hide();
        $('.slideshow_item.item_3, #slideshow_menu li.item_3 a').show().addClass('active');
        $('.slideshow_sujet.item_3').show();
        //animateSlides(1, item_counter);
        
        $('#slideshow_menu li a').mouseover(function(){
            if (!$('.slideshow_sujet').is(':animated')||!lock) {
                $('.slideshow_item, .slideshow_sujet').clearQueue('fx');
                lock=true;
            }
            var href="."+$(this).attr('name');
            $('.slideshow_item.active').hide().removeClass('active');
            $('.slideshow_sujet.active').fadeOut(300).removeClass('active');
            $('#slideshow_menu li a.active').removeClass('active');
            $('.slideshow_item'+href).show().addClass('active');
            $('.slideshow_sujet'+href).addClass('active').fadeIn(300);
            $(this).addClass('active');
            return false;
        });
    }

    
// DATEV slideshow
function init_DATEV_slideshow(){
    alert("init_DATEV_slideshow");
    var demovideo = '.datev .slideshow .demovideo',
        demovideos = '.datev .slideshow .demovideos';
    if(!$(demovideos).length)
        return;
    // Create slideshow buttons etc.
    var width = 0,
        demovideolinks = $(demovideo);
    demovideolinks.each(function(){
        width = width + $(this).outerWidth(true);
        $(this).clone().appendTo($(demovideos));
    });
    var slideshow_box = $(demovideos).css({
        'width': width*2
    }).wrap(
        $('<div>').addClass('slideshow_box')
    );
    $(slideshow_box).after(
        prev = $('<a>').attr({
            'class': 'btn previous',
            'href': '#',
            'title': 'Vorriges Video'
        }).text('Vorriges Video'),
        next = $('<a>').attr({
            'class': 'btn next',
            'href': '#',
            'title': 'Nächstes Video'
        }).text('Nächstes Video')
    ).wrap(      
        $('<div>').addClass('slideshow_videos')
    );
    // Next and previous image
    $(prev).unbind().click(function(){
        if(!$(demovideos).is(':animated')){
            var currentMarginLeft = parseInt($(demovideos).css('margin-left'));
            if($(demovideos).css('margin-left') == 'auto') // IE fix
                currentMarginLeft = 0;
            if(currentMarginLeft == 0){
                currentMarginLeft = 0-width;
                $(demovideos).css('margin-left', currentMarginLeft);
            }
            var newMarginLeft = currentMarginLeft + $(demovideo).outerWidth(true);
            $(demovideos).animate({
                'margin-left': newMarginLeft
            });
        }
        return false;
    });
    $(next).unbind().click(function(){
        var currentMarginLeft = parseInt($(demovideos).css('margin-left'));
        if($(demovideos).css('margin-left') == 'auto')
            currentMarginLeft = 0;
        var newMarginLeft = currentMarginLeft - $(demovideo).outerWidth(true);
        if(!$(demovideos).is(':animated')){
            $(demovideos).animate({
                'margin-left': newMarginLeft
            }, function() {
                if(Math.abs(newMarginLeft) >= width)
                    $(demovideos).css('margin-left', 0);
            });
        }
        return false;
    });
  
}  
    
/*window.addEvent('domready', function(){

    var accordion = new Accordion('.toggler', '.element', {opacity: false,
        onActive: function(toggler, element){toggler.setStyle('background', '#dcdcdc url(' + zms_common + 'images/pfeil_top.gif) right no-repeat');},
        onBackground: function(toggler, element){toggler.setStyle('background', 'white url(' + zms_common + 'images/pfeil_bottom.gif) right no-repeat')
        ;}
    }, $('accordion'));
    
    initSliders();
});

window.addEvent('resize', function() {
    initSliders();
});*/
    
/* DOM
------------------------------------------------------------------------------------------------ */

$(document).ready(function() {
    
    // DATEV Unternehmen online
    $.datev_uo();
    
    // Formular (DATEV - "Informationen einholen")
    //$('form.application, form.appointmentmaker, form.contact, form.s').forms({ summarypage: true, error_value: true });
    //$('form.recommendation').forms({ multipage: false,  error_value: true });
    
    // Slider im Bannerbereich (jQuery)
    initSliders();
    
});

