    var fehlermeldungen = [];
    fehlermeldungen[0] = new Object();
    fehlermeldungen[0]['Name'] =                    'Bitte geben Sie Ihren Nachnamen ein.';
    fehlermeldungen[0]['Vorname'] =                 'Bitte geben Sie Ihren Vornamen ein.';
    fehlermeldungen[0]['Strasse'] =                 'Bitte geben den Stra&szlig;ennamen ein.';
    fehlermeldungen[0]['HausNr'] =                  'Bitte geben Sie Ihre Hausnummer ein.';
    fehlermeldungen[0]['PLZ'] =                     'Bitte geben Sie Ihre Postleitzahl ein.';
    fehlermeldungen[0]['Ort'] =                     'Bitte geben Sie den Wohnort an.';
    fehlermeldungen[0]['EMail'] =                   'Bitte geben Sie eine g&uuml;ltige Email an.';
    fehlermeldungen[0]['ControlEMail'] =            'Die Emailadressen stimmen nicht &uuml;berein.';
    fehlermeldungen[0]['Newsletter_Datenschutz'] =  'Bitte akzeptieren Sie die Datenschutzerkl&auml;rung.';
    fehlermeldungen[0]['Land'] =                    'Bitte geben Sie das Aufenthaltsland an.';
    fehlermeldungen[0]['Login'] =                   'Bitte tragen Sie einen Benutzernamen ein. Der Benutzername darf keine Umlaute, Leer- oder Sonderzeichen enthalten und muss mindestens 4 Zeichen enthalten.';
    fehlermeldungen[0]['Password'] =                'Bitte tragen Sie ein mind. 6 stelliges Passwort ein.';
    fehlermeldungen[0]['ControlPassword'] =         'Die Passw&ouml;rter stimmen nicht &uuml;berein.';

    var formCheck = function(e)
    {
        var cnt = 0;
        var fehler = 0;
        var meldung = '';
        
        for(var i = 0; i < check.length; i++)
        {
            var el = check[i];
            var optional = false;
            var disabled = false;
            var failed = false;
            var fieldType = false;
            var htmlElement = null;
            var val = '';
    
            if(check[cnt].indexOf('|') > -1)
            {
                var b = check[cnt].split('|');
                var fieldName = b[0];
                fieldType = b[1];
                if(fieldType.indexOf('[') > -1)
                {
                    var param = fieldType.substr(fieldType.lastIndexOf('[')+1).replace(']','');
                    fieldType = fieldType.substr(0,fieldType.lastIndexOf('['));
                }
                if(fieldType.indexOf('emsg=') > -1)
                {
                    var emsg = fieldType.substr(5);
                }
                if(b[2] != undefined)
                {
                    var emsg = b[2] != '' ? b[2] : null;
                }
                if(b[3] != undefined)
                {
                    if(b[3] == 'optional')
                    {
                        optional = true;
                    }
                    else if(b[3] == 'disabled')
                    {
                        disabled = true;
                    }
                }
            }
            else
            {
                var fieldName = check[cnt];
            }
    
            var reg = new RegExp('^([0-9]{1,}[+]+)$');
            if(reg.test(fieldType))
            {
                var min = fieldType.toInt();
                fieldType = 'minLength';
            }

            
            try {
                htmlElement = document.getElementsByName(fieldName)[0];
                val = htmlElement.value;
            } catch (Exception) {
                htmlElement = document.getElementById(fieldName);
                if (htmlElement!=null)
                {
                    val = htmlElement.value;
                }
            }
    
            //Radio
            if(htmlElement.type == 'radio')
            {
                var checkedRadios = 0;
                var radios = $$('input[name='+fieldName+']');
                radios.each(function(el){
                    checkedRadios = el.checked ? checkedRadios+=1 : checkedRadios;
                });
            }
    
            //Select
            if(htmlElement.tagName.toLowerCase() == 'select')
            {
                var selected = htmlElement.selectedIndex;
                var valSelectedIndex = htmlElement.options[selected].value;
                if(valSelectedIndex == '')
                {
                    failed = true;
                }
            }
            //Telefon
            if(fieldType == 'telefon')
            {
                var reg = new RegExp('^([+])?(0)+([0-9]{2,})(\/)([0-9]{3,})$');
                failed = !reg.test(val);
            }
            // Text, Textarea, Password
            if(val.strip() == '' && (htmlElement.type == 'text' || htmlElement.type == 'password' || htmlElement.tagName.toLowerCase() == 'textarea' || htmlElement.type == 'hidden'))
            {
                failed = true;
            }
            // Email
            if(fieldType == 'email')
            {
                reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)(\\@)([a-zA-Z0-9\\-\\.]+)(\\.)([a-zA-Z]{2,4})$');
                failed = !reg.test(val);
            }
            // URL
            if(fieldType == 'url')
            {
                reg = new RegExp('^(http:\/\/)?(www\.)?([a-z.\-_]*)+(\.[a-z]{2,3})+(\/)?([a-z.\-_\/]*)?$');
                failed = !reg.test(s);
            }            
            
            // PLZ
            if(val.strip() != '' && fieldType == 'plz')
            {
                var reg = new RegExp('^([0-9-]{5})$');
                failed = !reg.test(val);
            }
			// Login
			if(fieldType == 'login')
            {
             reg = new RegExp('^([a-zA-Z0-9]{4,36})$');
             failed = !reg.test(val);
            }
			
			
			
			
			// Ende Login
    
            // Checkbox
            if(htmlElement.type == 'checkbox')
            {
                if(!htmlElement.checked)
                {
                    failed = true;
                }
            }
            // Feldinhalte vergleichen
            if(fieldType == 'equalto')
            {
                failed = $(param).value == htmlElement.value ? false : true;
            }
            
            // Mindestlaenge
            if(fieldType == 'minLength')
            {
                failed = val.length >= min ? false : true;
            }
            
            if( ( failed || checkedRadios == 0  ) && !optional )
            {
                fehler++;
                if(emsg == null)
                {
                    meldung += fehlermeldungen[0][fieldName]+'<br />';
                }
                else
                {
                    meldung += emsg+'<br />';
                }
            }
            
            cnt++;
        }
 
        Event.stop(e);
 
        if(fehler == 0)
        {
            $('fehler').hide();
            //return true;
            $('reg_form').submit();
        }
        else
        {
            $('fehler').show();
            $('fehler').update(meldung);
        }
        return false;
    }

    /**
     * Hilfsfunktionen
     */
    
    var isset = function(e)
    {
        try {
            if (eval(e)) {}
        }
        catch(err) {
            return false;
        }
        return true;
    }

    String.prototype.toInt = function()
    {
        var n = parseInt(this,10);
        return n || NaN;
    }
   
    Array.prototype.regInArray = function(reg)
    {
        var r = [];
        for(var i = 0; i < this.length; i++)
        {
            var regex = new RegExp(reg);
            if(regex.test(this[i]))
            {
                r.push(i);
            }
        }
        return r.length > 0 ? r : false;
    }    
    
    var toggleCheckContent = function(item,aKey,value)
    {
        var key = check.regInArray(item);
        if(key)
        {
            var c = check[key].split('|');
            
            var str = '';
            
            for(var i = 0; i <= 3; i++)
            {
                str+= i > 0 ? '|' : '';
                if(c[i] != undefined && i != aKey)
                {
                    str+= c[i];
                }
                if(i == aKey)
                {
                    str+= value;
                }
            }
            check[key] = str;
        }
    }