+function v_clean_cond (ifs, N_level, ifs_match) {
+ if (typeof(ifs) != 'object') { v_error("Need reference v_clean_cond "+typeof(ifs)); return [] }
+ if (! N_level) N_level = 0;
+ if (++N_level > 10) { v_error("Max dependency level reached " + N_level); return [] }
+
+ var deps = {};
+ var m;
+ for (var i = 0; i < ifs.length; i++) {
+ if (typeof(ifs[i]) == 'string') {
+ if (ifs[i].match(/^\s*function\s*\(/)) eval("ifs[i] = "+ifs[i]);
+ else if (m = ifs[i].match(/^(.+?)\s+was_valid$/)) ifs[i] = {field: m[1], was_valid:1}
+ else if (m = ifs[i].match(/^(.+?)\s+had_error$/)) ifs[i] = {field: m[1], had_error:1}
+ else if (m = ifs[i].match(/^(.+?)\s+was_checked$/)) ifs[i] = {field: m[1], was_checked:1}
+ else if (m = ifs[i].match(/^(\s*!\s*)(.+)\s*$/)) ifs[i] = {field: m[2], max_in_set: [0, m[2]]};
+ else if (ifs[i] != 'OR') ifs[i] = {field: ifs[i], required: 1};
+ }
+ if (typeof(ifs[i]) != 'object') continue;
+ if (! ifs[i].field) { v_error("Missing field key during validate_if"); return [] }
+ deps[ifs[i].field] = 2;
+ v_clean_field_val(ifs[i], N_level);
+ for (var k in ifs[i].deps) deps[k] = 2;
+ }
+ return deps;
+}
+