/** Tester om en værdi er et heltal
 * 
 * @param val værdien der skal testes
 *
 * @returns true hvis @a val er et heltal, ellers false
 *
 */
function validerHeltal(val) { 
    return /^[0-9]+$/.test(val);
}

/** Tester om et felt har noget indhold
 * 
 * @param mitFelt feltet der skal testes
 *
 * @returns true hvis @a mitFelt ikke er tomt, ellers false
 *
 */
function validerFeltUdfyldt(mitFelt) {
    return mitFelt.value != null && mitFelt.value != "";
}

function validerEmail(mitFelt) {
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(mitFelt.value)) {
        return true
    } else {
        return false
    }
}

function datoTilHeltal(ddmmyyyy) {
    d = ddmmyyyy.split('-');
    return d[2] + d[1]  + d[0];
}

function valReg(minForm) {
    var valid = false;
    if( validerFeltUdfyldt(minForm.OMFNAVN) ) {
        if ( minForm.OMFNAVN.value.length < 6 ) {
            alert("Navn skal mindst være seks tegn.");
            minForm.OMFNAVN.focus();
            return false;
        }
        if ( !validerFeltUdfyldt(minForm.OMFVEJNAVN) ) {
            alert("Du skal udfylde vejnnavn.");
            minForm.OMFVEJNAVN.focus();
            return false;
        }
        if ( !validerFeltUdfyldt(minForm.OMFHUSNR) ) {
            alert("Du skal udfylde husnr.");
            minForm.OMFHUSNR.focus();
            return false;
        }
        if ( !validerFeltUdfyldt(minForm.OMFPOSTNR) ) {
            alert("Du skal udfylde postnr.");
            minForm.OMFPOSTNR.focus();
            return false;
        }
        if ( !validerFeltUdfyldt(minForm.OMFPOSTDISTRIKT) ) {
            alert("Du skal udfylde postdistrikt.");
            minForm.OMFPOSTDISTRIKT.focus();
            return false;
        }
    }

    if ( validerFeltUdfyldt(minForm.OMFCONAVN) ) {
        if ( minForm.OMFCONAVN.value.length < 5 ) {
            alert("C/o navn skal mindst være fem tegn.");
            minForm.OMFCONAVN.focus();
            return false;
        }       
    }

    if ( validerFeltUdfyldt(minForm.OMFVEJNAVN) ) {
        if ( minForm.OMFVEJNAVN.value.length < 5 ) {
            alert("Vejnavn skal mindst være fem tegn.");
            minForm.OMFVEJNAVN.focus();
            return false;
        }       
    }
    
    if ( validerFeltUdfyldt(minForm.OMFHUSNR) ) {
        if (!validerHeltal(minForm.OMFHUSNR.value) ) {
            alert("Husnr. skal være et tal.");
            minForm.OMFHUSNR.focus();
            return false;
        }
    }
    
    if ( validerFeltUdfyldt(minForm.OMFPOSTNR) ) {
        if (!validerHeltal(minForm.OMFPOSTNR.value) ) {
            alert("Postnr. skal være et tal.");
            minForm.OMFPOSTNR.focus();
            return false;
        }
        if ( minForm.OMFPOSTNR.value.length < 3 ) {
            alert("Postnr. skal mindst være tre tegn.");
            minForm.OMFPOSTNR.focus();
            return false;
        }
    }
    
    if ( validerFeltUdfyldt(minForm.OMFPOSTDISTRIKT) ) {
        if ( minForm.OMFPOSTDISTRIKT.value.length < 5 ) {
            alert("Postdistrikt (bynavn) skal være mindst fem tegn.");
            minForm.OMFPOSTDISTRIKT.focus();
            return false;
        }       
    }
    
    var $ok = true;
    $('#'+minForm.id).
        children('fieldset#address').
        children('.lageradresse').each(function(index) {
            $(this).
                children('p').
                children('.inputfield').each(function(index) {
                    if ($(this).attr('name') == 'OMFNAVNALT[]' && $(this).val() != '') {                        
                        if ($(this).val().length < 6 ) {
                            alert("Alternativ adresse " + (index+1) + ": Navn skal mindst være seks tegn.");
                            $(this).focus();
                            $ok = false;
                            return $ok;
                        }
                        
                        var reqFields = {'vejnavn' : 1, 'husnr' : 1, 'postnr' : 1, 'postdistrikt' : 1 };
                        $(this).
                            parent().
                            parent().
                            children('p').
                            children('.inputfield').each(function(index) {
                                var a = $(this).attr('id').match('omf([a-z]+)([0-9]+)');                                
                                if (a[1] in reqFields && $(this).val() == '') {
                                    alert("Alternativ adresse " + a[2] + ": Du skal udfylde " + $(this).siblings('label').text());
                                    $(this).focus();
                                    $ok = false;
                                    return false;
                                }
                                if ((a[1] == 'conavn' && $(this).val() != '' && $(this).val().length < 5) ||
                                    (a[1] == 'vejnavn' && $(this).val().length < 5) ||
                                    (a[1] == 'postdistrikt' && $(this).val().length < 5)) {
                                    alert("Alternativ adresse " + a[2] + ": " + $(this).siblings('label').text() + " skal mindst være fem tegn.");
                                    $(this).focus();
                                    $ok = false;
                                    return false;                                    
                                }
                                if ((a[1] == 'husnr' && !validerHeltal($(this).val())) ||
                                    (a[1] == 'postnr' && !validerHeltal($(this).val()))) {
                                    alert("Alternativ adresse " + a[2] + ": " + $(this).siblings('label').text() + " skal være et tal.");
                                    $(this).focus();
                                    $ok = false;
                                    return false;                                    
                                }
                                if ((a[1] == 'postnr' && $(this).val().length < 3)) {
                                    alert("Alternativ adresse " + a[2] + ": " + $(this).siblings('label').text() + " skal mindst være tre tegn.");
                                    $(this).focus();
                                    $ok = false;
                                    return false;                                    
                                }
                            });                        
                    }
                });
            return $ok;
        });
    
    if (!$ok) return $ok;
    
    if (minForm.PERIODE_START != undefined) {
        if (minForm.PERIODE_START.value.length == 0 || minForm.PERIODE_SLUT.value.length == 0) {
            alert("Du skal angive en periode");
            return false;
        }
        if (!minForm.PERIODE_START.value.match(/\d{2}-\d{2}-\d{4}/) || !minForm.PERIODE_SLUT.value.match(/\d{2}-\d{2}-\d{4}/)) {
            alert("Forkert datoformat. Skal være DD-MM-ÅÅÅÅ");
            return false;
        }
        if (datoTilHeltal(minForm.PERIODE_SLUT.value) < datoTilHeltal(minForm.PERIODE_START.value)) {
            alert("Slutdato skal ligge efter startdato.");
            return false;
        }        
    }

    if (minForm.ANMNAVN != undefined && minForm.ANMADRESSE != undefined) {
        if (!validerFeltUdfyldt(minForm.ANMNAVN)) {
            alert("Du skal udfylde navnet på den ansvarlige/arrangøren");
            minForm.ANMNAVN.focus();
            return false;
        } else if ( minForm.ANMNAVN.value.length < 5 ) {
            alert("Navnet på den ansvarlige/arrangøren skal være mindst fem tegn.");
            minForm.ANMNAVN.focus();
            return false;
        }
        if (!validerFeltUdfyldt(minForm.ANMADRESSE)) {
            alert("Du skal udfylde adressen på den ansvarlige/arrangøren");
            minForm.ANMADRESSE.focus();
            return false;
        } else if ( minForm.ANMADRESSE.value.length < 5 ) {
            alert("Adressen på den ansvarlige/arrangøren skal være mindst fem tegn.");
            minForm.ANMADRESSE.focus();
            return false;
        }
    }
    
    if ( validerFeltUdfyldt(minForm.ANMEMAIL) ) {
        if ( !validerEmail(minForm.ANMEMAIL) ) {
            alert("Du skal skrive en korrekt e-mail-adresse");
            minForm.ANMEMAIL.focus();
            return false;
        }
    }
        
    if ( validerFeltUdfyldt(minForm.ANMTLFNR) ) {
        if (!validerHeltal(minForm.ANMTLFNR.value) ) {
            alert("Tlf-nr. skal være tal");
            minForm.ANMTLFNR.focus();
            return false;
        }
        
        if ( validerFeltUdfyldt(minForm.ANMTLFNR) ) {
            if ( minForm.ANMTLFNR.value.length < 8 ) {
                alert("Tlf-nr. skal være 8 cifre");
                minForm.ANMTLFNR.focus();
                return false;
            }
        }
    }

    if (minForm.TEST_DELTAGERLISTE == undefined || minForm.TEST_DELTAGERLISTE.value.length == 0) {
        if (minForm.DELTAGERLISTE != undefined && minForm.DELTAGERLISTE.value.length == 0) {
            alert("Du skal vedlægge en deltagerliste");
            minForm.DELTAGERLISTE.focus();
            return false;
        }
    }

    return true;
}

function valPreReg(minForm) {
    var valid = false;

    for(var i=0; i<minForm.REGTYPE.length; i++) {
        if (minForm.REGTYPE[i].checked) {
            valid = true;
            break;
        }
    }
    if (!valid) {
        alert("Der skal vælges en omførselstype");
        minForm.REGTYPE[0].focus();
        return false;
    }

    if(!minForm.INGENCVR.checked && validerFeltUdfyldt(minForm.CVRNR)) {
        if (!validerHeltal(minForm.CVRNR.value)) {
            alert("CVR-nr. skal være et tal.");
            minForm.CVRNR.focus();
            return false;
        }
        if (minForm.CVRNR.value.length < 8) {
            alert("CVR-nr. skal være på 8 cifre.");
            minForm.CVRNR.focus();
            return false;
        }
    } else if (!minForm.INGENCVR.checked) {
        alert("Du skal udfylde CVR-nr. eller sætte hak efter 'Har du ikke et CVR nr.'");
        minForm.CVRNR.focus();
        return false;
    }
}

