-///----------------------------------------------------------------///
-
-function eob_get_val (key, extra2, extra1, _default) {
- if (typeof(extra2[key]) != 'undefined') return extra2[key];
- if (typeof(extra1[key]) != 'undefined') return extra1[key];
- return _default;
-}
-
-function eob_as_string (extra2) {
- var extra1 = this.extra;
- if (! extra2) extra2 = new Array();
-
- var joiner = eob_get_val('as_string_join', extra2, extra1, '\n');
- var header = eob_get_val('as_string_header', extra2, extra1, '');
- var footer = eob_get_val('as_string_footer', extra2, extra1, '');
-
- return header + this.as_array(extra2).join(joiner) + footer;
-}
-
-/// return an array of applicable errors
-function eob_as_array (extra2) {
- var errors = this.errors;
- var extra1 = this.extra;
- if (! extra2) extra2 = new Array();
-
- var title = eob_get_val('as_array_title', extra2, extra1, 'Please correct the following items:');
-
- /// if there are heading items then we may end up needing a prefix
- var has_headings;
- if (title) has_headings = 1;
- else {
- for (var i = 0; i < errors.length; i ++) {
- if (typeof(errors[i]) != 'string') continue;
- has_headings = 1;
- break;
- }
- }
-
- var prefix = eob_get_val('as_array_prefix', extra2, extra1, has_headings ? ' ' : '');
-
- /// get the array ready
- var arr = new Array();
- if (title && title.length) arr[arr.length] = title;
- /// add the errors
- var found = new Array();
- for (var i = 0; i < errors.length; i ++) {
- if (typeof(errors[i]) == 'string') {
- arr[arr.length] = errors[i];
- found = new Array();
- } else {
- var text = this.get_error_text(errors[i]);
- if (found[text]) continue;
- found[text] = 1;
- arr[arr.length] = prefix + text;
- }
- }
-
- return arr;
-}
-
-/// return a hash of applicable errors
-function eob_as_hash (extra2) {
- var errors = this.errors;
- var extra1 = this.extra;
- if (! extra2) extra2 = new Array();
- var suffix = eob_get_val('as_hash_suffix', extra2, extra1, '_error');
- var joiner = eob_get_val('as_hash_join', extra2, extra1, '<br />');
-
- /// now add to the hash
- var found = new Array();
- var ret = new Array();
- for (var i = 0; i < errors.length; i ++) {
- if (typeof(errors[i]) == 'string') continue;
- if (! errors[i].length) continue;
-
- var field = errors[i][0];
- var type = errors[i][1];
- var field_val = errors[i][2];
- var ifs_match = errors[i][3];
-
- if (! field) return alert("Missing field name");
- if (field_val['delegate_error']) {
- field = field_val['delegate_error'];
- field = field.replace(new RegExp('\\$(\\d+)','g'), function (all, N) {
- if (typeof(ifs_match) != 'object'
- || typeof(ifs_match[N]) == 'undefined') return ''
- return ifs_match[N];
- });
- }
-
- var text = this.get_error_text(errors[i]);
- if (! found[field]) found[field] = new Array();
- if (found[field][text]) continue;
- found[field][text] = 1;
-
- field += suffix;
- if (! ret[field]) ret[field] = new Array();
- ret[field].push(text);
- }
-
- /// allow for elements returned as
- if (joiner) {
- var header = eob_get_val('as_hash_header', extra2, extra1, '');
- var footer = eob_get_val('as_hash_footer', extra2, extra1, '');
- for (var key in ret) {
- if (key == 'extend') continue; // Protoype Array() fix
- ret[key] = header + ret[key].join(joiner) + footer;
- }