function DG_RSV_ValidatorRules (Validator) {
    var form_id = Validator.form.id;
    var rules = new Array();
    if (form_id == 'news_form') {
        rules.push("required,name,Du skal indtaste navn.");
        rules.push("required,zip,Du skal indtaste postnummer.");
        rules.push("length<=8,zip,Du har ikke udfyldt postnummer korrekt.");
        rules.push("required,email,Den indtastede e-mail er ikke gyldig.");
        rules.push("function,DG_RSV_Custom.validNewsEmail");
        rules.push("required,password,Du skal indtaste et password.");
        
    } else if (form_id == 'userDataForm') {
        
        rules.push("required,name,Du skal indtaste navn.");
        rules.push("required,zip,Du skal indtaste postnummer.");
        rules.push("length<=8,zip,Du har ikke udfyldt postnummer korrekt.");
        
        rules.push("required,email,Du skal indtaste din e-mail adresse\\, da du senere kan bruge den til at opdatere dine brugerinformationer!");
        rules.push("function,DG_RSV_Custom.validUserEmail");
        
        rules.push("function,DG_RSV_Custom.validNewEmail");
        
        //rules.push("required,address,Du skal indtaste adresse.");
        //rules.push("required,city,Du skal indtaste by.");
        
        rules.push("required,password,Du skal indtaste et password.");
        
        
        rules.push("same_as,password1,password2,Hvis du skifter adgangskode\\, skal du tast den ens i begge felter.");
        
        rules.push("function,DG_RSV_Custom.SmsChoiceValid");
        
    } else if (form_id == 'loginForm' || form_id == 'loginFormTools') {
        rules.push("required,email,Den indtastede e-mail er ikke gyldig.");
        rules.push("function,DG_RSV_Custom.validLoginEmail");
        rules.push("required,password,Du skal indtaste din adgangskode.");
    } else if (form_id == 'passwordreminderForm') {
        rules.push("required,email,Den indtastede e-mail er ikke gyldig.");
        rules.push("function,DG_RSV_Custom.validPasswordreminderEmail");
    }
    return rules;
}


var DG_RSV_Custom = {
    SmsChoiceValid:
        function () {
            // Check af ruter m.v.
            var form = jQuery('#userDataForm')[0];
            var field = jQuery('#userDataForm input[name=smsinfo_weekdays]')[0];
            var message = '';
            var valid = true;
            if (form.smsinfo_weekdays) {
                var valgt_rute = false;
                var valgt_dag  = false;
                var valgt_tid  = false;
                
                if (form.smsinfo_route_odden_ebeltoft.checked || form.smsinfo_route_odden_aarhus.checked) {
                    valgt_rute = true;
                }
        
                if (form.smsinfo_weekdays.checked || form.smsinfo_weekend.checked) {
                    valgt_dag = true;
                }
        
                if (form.smsinfo_time_0500_0900.checked || form.smsinfo_time_0900_1400.checked || form.smsinfo_time_1400_1900.checked || form.smsinfo_time_1900_0500.checked) {
                    valgt_tid = true;
                }
                
                if (valgt_rute && (form.mobile_phone.value.length < 8)) {
                    message = 'Du skal indtaste dit mobilnummer!';
                    valid = false;
                }
                
                if (valgt_rute || valgt_dag || valgt_tid) {
                    if (valgt_rute && valgt_dag && valgt_tid) {
                        // Der er valgt noget i alle 3 - ok
                    } else {
                        message = 'Du skal v' + String.fromCharCode(230) + 'lge b' + String.fromCharCode(229) + 'de rute, dage og tidsrum!';
                        valid = false;
                    }
                }
            }
            if (valid) {
                return false;
            } else {
                message = message || "Den indtastede e-mail er ikke gyldig";
                return [[field, message]];
            }
        },
    validLoginEmail: 
        function () {
            var field = jQuery('#loginForm input[name=email]');
            return DG_RSV_Custom.commonMailvalidator(field)
            
        },
    validPasswordreminderEmail: 
        function () {
            var field = jQuery('#passwordreminderForm input[name=email]');
            return DG_RSV_Custom.commonMailvalidator(field)
            
        },
    validNewsEmail: 
        function () {
            var field = jQuery('#news_form input[name=email]');
            return DG_RSV_Custom.commonMailvalidator(field)
            
        },
    validUserEmail: 
        function () {
            var field = jQuery('#userDataForm input[name=email]');
            var message = '';//'Du skal indtaste din e-mail adresse, da du senere kan bruge den til at opdatere dine brugerinformationer!';
            return DG_RSV_Custom.commonMailvalidator(field, message)
            
        },
    commonMailvalidator:
        function (field, message) {
            if (!field.val() || Ed_ValidateEmail(field.val())) {
                return false;
            } else {
                message = message || "Den indtastede e-mail er ikke gyldig";
                return [[field, message]];
            }
        },
    validNewEmail:
        function () {
            var email = jQuery("#userDataForm input[name=email]");
            var old_email = jQuery("#userDataForm input[name=old_email]");
            var password1 = jQuery("#userDataForm input[name=password1]");
            var password2 = jQuery("#userDataForm input[name=password2]");
            var field;
            var message;
            if (email.val() != old_email.val()) {
                if (!password1.val()) {
                    field = password1[0];
                    message = 'Du skal indtaste dit password når du skifter email.';
                } else if (!password2.val()) {
                    field = password2[0];
                    message = 'Du skal indtaste dit password to gange.';
                } else if (password1.val() != password2.val()) {
                    field = password2[0];
                    message = 'De to passwords er ikke ens.';
                    
                }
            }
            
            if (field && message) {
                return [[field, message]];
            } else {
                return false;
            }
            
        }
}





var use_DG_Validator = 'RSV';
if (use_DG_Validator == 'RSV') {
    jQuery(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;
                        jQuery("#" + 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)) {
            //alert(strRule);
            this.rules.push(strRule);
        }
    }
    
    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;
}




// YAV //
//var oldwindowonload
//if (use_DG_Validator == 'YAV') {
//  oldwindowonload = window.onload;
//  window.onload = function () {
//      for (i in document.forms) {
//          if (document.forms[i].id) {
//              document.forms[i].onsubmit = function () {return DG_YAV_Validate(this);};
//          }
//      }
//      window.onload = (oldwindowonload || "");
//  }
//}
//
//function DG_YAV_Validate(f) {
//  validator = (f.validator || new DG_YAV_Validator(f));
//  return validator.check();
//}
//
//function DG_YAV_Validator (f) {
//  this.form = f;
//  this.config = new DG_YAV_ValidatorConfig(this);
//  this.check = function () {
//      return (this.config.rules.length) ? performCheck(this.form.id, this.config.rules, 'inline') : true;
//  }
//  return this;
//}
//
//function DG_YAV_ValidatorConfig (Validator) {
//  this.rules=new Array();
//  var form_id = Validator.form.id;
//  if (form_id == 'edit_cv_form') {
//      this.rules[0]='headline:Overskrift|required';
//  } else if (form_id == 'advertiser_data_form') {
//      this.rules[0]='zip|required';
//  }
//  return this;
//}





