diff options
Diffstat (limited to 'usr/local/www/javascript/jquery.ipv4v6ify.js')
-rwxr-xr-x | usr/local/www/javascript/jquery.ipv4v6ify.js | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/usr/local/www/javascript/jquery.ipv4v6ify.js b/usr/local/www/javascript/jquery.ipv4v6ify.js deleted file mode 100755 index 93a513a..0000000 --- a/usr/local/www/javascript/jquery.ipv4v6ify.js +++ /dev/null @@ -1,140 +0,0 @@ -/*jslint browser: true, eqeqeq: true, undef: true */ -/*global jQuery */ -/****************************************************************************** -Lines above are for jslint, the JavaScript verifier. http://www.jslint.com/ -******************************************************************************/ - -/* MIT-licensed code from https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some */ -/* (C) 2007 Mozilla Developer Network and/or Jeff Walden */ -if (!Array.prototype.some) { - Array.prototype.some = function(fun /*, thisp */) { - "use strict"; - if (!this) { - throw new TypeError(); - } - var t = Object(this); - var len = t.length >>> 0; - if (typeof fun !== "function") { - throw new TypeError(); - } - var thisp = arguments[1]; - for (var i = 0; i < len; i++) { - if (i in t && fun.call(thisp, t[i], i, t)) { - return true; - } - } - return false; - }; -} - -(function ($) { - // -------------------------------------------------------------------- - // find pairs of <input class='ipv4v6'> (textbox for IPv4 or IPv6 addr) - // and <select class='ipv4v6'> (dropdown for # bits in CIDR) and - // activate behavior that restricts options in the <select> when an - // ipv4 address is typed in the <input>. - // -------------------------------------------------------------------- - var _ipv4v6ify = function (input1, input2) { - var options = Array.prototype.slice.call(input2.options, 0); - var has_128 = options.some(function (x) { return parseInt(x.value, 10) === 128; }); - var has_0 = options.some(function (x) { return parseInt(x.value, 10) === 0; }); - var max_ipv6 = has_128 ? 128 : 127; - var min_ipv6 = has_0 ? 0 : 1; - var max_ipv4 = has_128 ? 32 : 31; - var min_ipv4 = has_0 ? 0 : 1; - var was_ipv4 = undefined; - var is_ipv4 = undefined; - var restrict_bits_to_ipv4 = function () { - input2.options.length = 0; - for (var i = 0; i < options.length; i += 1) { - var val = parseInt(options[i].value, 10); - if (val >= min_ipv4 && val <= max_ipv4) { - input2.options.add(options[i]); - } - } - }; - var unrestrict_bits = function () { - input2.options.length = 0; - for (var i = 0; i < options.length; i += 1) { - input2.options.add(options[i]); - } - }; - var onchange_handler = function () { - was_ipv4 = is_ipv4; - is_ipv4 = /\./.test(input1.value) && !/\:/.test(input1.value); - // handle state transitions to gracefully change the - // value in the dropdown. - var bits = parseInt($(input2).val(), 10); - if (was_ipv4 === false && is_ipv4 === true) { - restrict_bits_to_ipv4(); - /* min_ipv4 -> min_ipv4 */ - /* ... -> ... */ - /* max_ipv4 -> max_ipv4 */ - /* ... -> ... */ - /* max_ipv6 -> max_ipv4 */ - if (bits < min_ipv4) { - $(input2).val(min_ipv4); - } - else if (bits < max_ipv4) { - $(input2).val(bits); - } - else { - $(input2).val(max_ipv4); - } - } - else if (was_ipv4 === true && is_ipv4 === false) { - unrestrict_bits(); - /* min_ipv4 -> min_ipv4 */ - /* ... -> ... */ - /* max_ipv4 -> max_ipv4 */ - if (bits < min_ipv4) { - $(input2).val(min_ipv6); - } - else if (bits < max_ipv4) { - $(input2).val(bits); - } - else { - $(input2).val(max_ipv6); - } - } - else if (was_ipv4 === undefined && is_ipv4 === true) { - // initial value is an ipv4 address - restrict_bits_to_ipv4(); - /* min_ipv4 -> min_ipv4 */ - /* ... -> ... */ - /* max_ipv4 -> max_ipv4 */ - /* ... -> ... */ - /* max_ipv6 -> max_ipv4 */ - if (bits < min_ipv4) { - $(input2).val(min_ipv4); - } - else if (bits < max_ipv4) { - $(input2).val(bits); - } - else { - $(input2).val(max_ipv4); - } - } - }; - $(input1).unbind("change").bind("change", onchange_handler).trigger("change"); - }; - $.fn.extend({ - "ipv4v6ify": function () { - return this.each(function () { - var inputs, i, input1, input2; - inputs = $(this).find(":input.ipv4v6").toArray(); - for (i = 0; i < inputs.length - 1; i += 1) { - input1 = inputs[i]; - input2 = inputs[i + 1]; - if (input1.type === "text" && input2.type === "select-one") { - _ipv4v6ify(input1, input2); - } - } - }); - } - }); - $(function () { - $(document).ipv4v6ify(); - }); -})(jQuery); - |