
function DG_RSV_ValidatorRules (Validator) {
    var form_id = Validator.form.id;
    var rules = new Array();
    if (form_id == 'form_notice_subscribe') {
        rules.push("required,email,Den indtastede e-mail er ikke gyldig.");
        rules.push("if:email!=,valid_email,email,Den indtastede e-mail er ikke gyldig.");
    }
    return rules;
}


var DG_RSV_Custom = {
   max1positiontype: 
        function () { 
            var fields = $('input[type=checkbox][name=positiontype]:checked');
            if (fields.length > 1) {
                return [[fields, "Du må kun udfylde et ansættelsesforhold"]];
            } else {
                return false;
            }
        },
    expiredateAndActivedate: function () {
            var activedate=new Date($('input[name=year_activedate]').val(),$('select[name=month_activedate]').val() - 1,$('select[name=date_activedate]').val(),0,0,0);
            var expiredate=new Date($('input[name=year_expiredate]').val(),$('select[name=month_expiredate]').val() - 1,$('select[name=date_expiredate]').val(),0,0,0);
            if (activedate >= expiredate) {
                return [[$('input[name=year_expiredate]'), "Udløbsdato er før publiceringsdatoen"]];
            } else {
                activedate.setDate(activedate.getDate() + 30);
                if (activedate < expiredate) {
                    return [[$('input[name=year_expiredate]'), "Udløbsdato må højst være 30 dage efter publiceringsdato"]];
                }
            }
            return false;
        }
}


var use_DG_Validator = 'RSV';


if (use_DG_Validator == 'RSV') {
    $(document).ready(
        function() {
            var DG_Validator;
            for (i in document.forms) {
                if (document.forms[i].id) {
                    DG_Validator = DG_RSV_Validator (document.forms[i]);
                    if (DG_Validator) {
                        if (!DG_Validator.config) {
                            DG_Validator.config = {
                                displayType: 'alert-all',
                                errorJSItemBullet: '* ',
                                errorTextIntro: 'Der er følgende fejl i dine indtastninger:',
                                rules: DG_Validator.rules
                            }
                        }
                        document.forms[i].validator = DG_Validator;
                        $("#" + DG_Validator.form.id).RSV(DG_Validator.config);
                    }
                }
            }
            
        }
    );
}

function DG_RSV_Validator (f) {
    this.form = f;
    this.rules = new Array();
    this.config = (window.DG_RSV_ValidatorConfig_callback) ? new DG_RSV_ValidatorConfig_callback(this) : null;
    
    this.addRule = function() {
        var strRule = arguments[0];
        if (this.fieldExists(strRule)) this.rules.push(arguments[0]);
    }
    
    this.fieldExists = function() {
        var arrRule = (('' + arguments[0]).indexOf(",") > 0) ? arguments[0].split(",") : null;
        if (arrRule && arrRule.length >= 2) {
            var arrFieldNames = new Array(), requirement;
            for (var i = 0; i < arrRule.length; i++) {
                if (arrRule[i].indexOf('if:') == -1) {
                    requirement = arrRule[i]
                    arrFieldNames.push(arrRule[i + 1]);
                    if (requirement == 'same_as' || requirement == 'valid_date') arrFieldNames.push(arrRule[i + 2]);
                    if (requirement == 'valid_date') arrFieldNames.push(arrRule[i + 3]);
                    break;
                }
            }
            var valid = true;
            for (var i = 0; i < arrFieldNames.length; i++) {
                valid = (valid && !!this.form[arrFieldNames[i]]);
            }
            if (arrRule[0] == 'function') valid = true;
            return valid;
        } else {
            return false;
        }
    }
    
    ruledefinitions = new Array();
    if (window.DG_RSV_ValidatorRules_callback) ruledefinitions = DG_RSV_ValidatorRules_callback(this);
    if (!ruledefinitions.length) ruledefinitions = DG_RSV_ValidatorRules(this);
    for (var i = 0; i < ruledefinitions.length; i++) {
        this.addRule(ruledefinitions[i]);
    }
    
    return this;
}




