function DG_RSV_ValidatorRules (Validator) {
    var form_id = Validator.form.id;
    var rules = new Array();
    if (form_id == 'login_form') {
        rules.push("required,rbe_password,Du skal indtaste din adgangskode");
    } else if (form_id == 'login_form_alert') {
        rules.push("required,rbe_password,Du skal indtaste din adgangskode");
    } else if (form_id == 'search_form') {
        rules.push("required,searchstring,Du skal indtaste et søgeord");
    }
    return rules;
}


var DG_RSV_Custom = {
}

function GetValidDateFromString (str) {
    var dateArray = str.split('-');
    var testdate = new Date(dateArray[2],dateArray[1] - 1,dateArray[0],0,0,0);
    var validdate = testdate;
    var date = parseFloat(dateArray[0]) || -1;
    var month = parseFloat(dateArray[1]) || -1;
    var year = parseFloat(dateArray[2]) || -1;
    if (testdate.getDate() != date ||
        testdate.getMonth() != month - 1 ||
        testdate.getFullYear() != year) {
        validdate = false;
    }
    return validdate;
}

var use_DG_Validator = 'RSV';

if (use_DG_Validator == 'RSV') {
    $(document).ready(
        function() {
            for (i in document.forms) {
                if (document.forms[i].id) {
                    var DG_Validator = new DG_RSV_Validator (document.forms[i]);
                    if (DG_Validator) {
                        if (!DG_Validator.config) {
                            DG_Validator.config = {
                                displayType: 'alert-one',
                                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;
}


