return false;
},
+ 'ipmask': function()
+ {
+ return cbi_validators.ipmask4.apply(this) ||
+ cbi_validators.ipmask6.apply(this);
+ },
+
+ 'ipmask4': function()
+ {
+ var ip = this, mask = 32;
+
+ if (ip.match(/^(\S+)\/(\S+)$/))
+ {
+ ip = RegExp.$1;
+ mask = RegExp.$2;
+ }
+
+ if (!isNaN(mask) && (mask < 0 || mask > 32))
+ return false;
+
+ if (isNaN(mask) && !cbi_validators.ip4addr.apply(mask))
+ return false;
+
+ return cbi_validators.ip4addr.apply(ip);
+ },
+
+ 'ipmask6': function()
+ {
+ var ip = this, mask = 128;
+
+ if (ip.match(/^(\S+)\/(\S+)$/))
+ {
+ ip = RegExp.$1;
+ mask = RegExp.$2;
+ }
+
+ if (!isNaN(mask) && (mask < 0 || mask > 128))
+ return false;
+
+ if (isNaN(mask) && !cbi_validators.ip6addr.apply(mask))
+ return false;
+
+ return cbi_validators.ip6addr.apply(ip);
+ },
+
'port': function()
{
var p = Int(this);
if (node && node.parentNode && !cbi_d_check(entry.deps)) {
node.parentNode.removeChild(node);
state = true;
- } else if ((!node || !node.parentNode) && cbi_d_check(entry.deps)) {
+ } else if (parent && (!node || !node.parentNode) && cbi_d_check(entry.deps)) {
var next = undefined;
for (next = parent.firstChild; next; next = next.nextSibling) {
}
// hide optionals widget if no choices remaining
- if (parent.parentNode && parent.getAttribute('data-optionals'))
+ if (parent && parent.parentNode && parent.getAttribute('data-optionals'))
parent.parentNode.style.display = (parent.options.length <= 1) ? 'none' : '';
}
}
}
- nodes = document.querySelectorAll('[data-type]');
-
- for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
- cbi_validate_field(node, node.getAttribute('data-optional') === 'true',
- node.getAttribute('data-type'));
- }
-
nodes = document.querySelectorAll('[data-choices]');
for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
cbi_dynlist_init(node, choices[2], choices[3], options);
}
+ nodes = document.querySelectorAll('[data-type]');
+
+ for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
+ cbi_validate_field(node, node.getAttribute('data-optional') === 'true',
+ node.getAttribute('data-type'));
+ }
+
cbi_d_update();
}
var obj = document.getElementById(id)
var sel = document.createElement("select");
sel.id = selid;
+ sel.index = obj.index;
sel.className = obj.className.replace(/cbi-input-text/, 'cbi-input-select');
if (obj.nextSibling) {
input.value = '';
cbi_dynlist_keydown({
- target: se,
+ target: input,
keyCode: 8
});
}
else
{
cbi_dynlist_keydown({
- target: se,
+ target: input,
keyCode: 13
});
}
var quot_esc = [/"/g, '"', /'/g, '''];
function esc(s, r) {
+ if (typeof(s) !== 'string' && !(s instanceof String))
+ return '';
+
for( var i = 0; i < r.length; i += 2 )
s = s.replace(r[i], r[i+1]);
return s;
var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/;
var a = b = [], numSubstitutions = 0, numMatches = 0;
- while( a = re.exec(str) )
+ while (a = re.exec(str))
{
var m = a[1];
var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5];
pad = leftpart.substr(1,1);
else if (pPad)
pad = pPad;
+ else
+ pad = ' ';
var justifyRight = true;
if (pJustify && pJustify === "-")
break;
case 'd':
- subst = (+param || 0);
+ subst = ~~(+param || 0);
break;
case 'u':
- subst = Math.abs(+param || 0);
+ subst = ~~Math.abs(+param || 0);
break;
case 'f':
var i = 0;
var val = (+param || 0);
- var units = [ '', 'K', 'M', 'G', 'T', 'P', 'E' ];
+ var units = [ ' ', ' K', ' M', ' G', ' T', ' P', ' E' ];
for (i = 0; (i < units.length) && (val > mf); i++)
val /= mf;
- subst = val.toFixed(pr) + ' ' + units[i];
+ subst = (i ? val.toFixed(pr) : val) + units[i];
+ pMinLength = null;
break;
}
}
}
+ if (pMinLength) {
+ subst = subst.toString();
+ for (var i = subst.length; i < pMinLength; i++)
+ if (pJustify == '-')
+ subst = subst + ' ';
+ else
+ subst = pad + subst;
+ }
+
out += leftpart + subst;
str = str.substr(m.length);
}