/**
 * custom validation functions
 * this file depends on prototype/validation.js and the translator js helper script
 */
Loader.addOnload(function() {
    if(window.Validation && Validation.add) {
        Validation.addAllThese([
                ['validate-minlength', '', function(v, elm){
                    var re = new RegExp(/^minimum-length-[0-9]+$/);
                    var result = true;
                    $w(elm.className).each(function(name, index) {
                        if (name.match(re) && result) {
                            var length = name.split('-')[2];
                            result = (v.length >= length);
                        }
                    });
                    return result;
                }],
                ['validate-checked', '', function(v, elm){
                    if(elm.type == 'checkbox') return elm.checked;
                    return true;
                }],
                [
                    'validate-packstation',
                    'Leider können wir die Lieferung an Packstationen auf Grund der Größe '
                            + 'der zu versendenden Päckchen nicht anbieten.<br>\n'
                            + 'Vielen Dank für Ihr Verständnis. ',
                    function(v, elm) {
                        return !/packstation/i.test(v);
                    }
                ],
                ['validate-street1', Translator.translate('Please enter a street number.'), function(v, elm){
                    // test wether customer entered a streetnumber or not
                    // form id may be co-shipping-form or co-billing-form or something like that
                    var formName = elm.form.id.match(/.*?-(.*?)-form/);
                    var e;
                    if(!formName) {
                        e = elm.form.elements['has_streetnumber'];
                    } else {
                        e = elm.form.elements[formName[1] + '[has_streetnumber]'];
                    }
                    if(e && e.value == 1) {
                        return true;
                    }
                    if(!/\d/.test(v)) {
                        var msg = Translator.translate('Please confirm that you have no street number. Click \'cancel\' to enter it.');
                        msg = msg.replace('. ', '.\n');
                        if(confirm(msg)) {
                            if(e) e.value = 1;
                            return true;
                        } else {
                            return false;
                        }
                    } else {
                        if(e) e.value = 1;
                    }
                    return true;
                }]
        ]);
    }
}, 100);
