forked from jpatokal/openflights
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutilities.js
81 lines (44 loc) · 17 KB
/
utilities.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
var HintClass = "hintTextbox";var HintActiveClass = "hintTextboxActive";var miniHintClass = "miniTextbox";var miniHintActiveClass = "miniTextboxActive";String.prototype.trim = (function () {return this.replace(/^\s+|\s+$/g, "");});
function initHintTextboxes() {var inputs = document.getElementsByTagName("input");for (i = 0; i < inputs.length; i++) {var input = inputs[i];if (input.type != "text") {continue;}if (input.className.indexOf(miniHintClass) != -1) {input.hintText = input.value;input.className = miniHintClass;input.onfocus = onHintTextboxFocus;input.onblur = onHintTextboxBlur;}if (input.className.indexOf(HintClass) != -1) {input.hintText = input.value;input.className = HintClass;input.onfocus = onHintTextboxFocus;input.onblur = onHintTextboxBlur;}}}
function resetHintTextboxes() {var inputs = document.getElementsByTagName("input");for (i = 0; i < inputs.length; i++) {var input = inputs[i];if (input.type != "text") {continue;}if (input.className.indexOf(HintClass) != -1) {input.className = HintClass;input.value = input.hintText;input.style.color = "#888";}if (input.className.indexOf(miniHintClass) != -1) {input.className = miniHintClass;input.value = input.hintText;input.style.color = "#888";}}}
function onHintTextboxFocus() {var input = this;if (input.value.trim() == input.hintText) {input.value = "";if (input.className.indexOf(HintClass) != -1) {input.className = HintActiveClass;} else {input.className = miniHintActiveClass;}}input.style.color = "#000";}
function onHintTextboxBlur() {var input = this;if (input.value.trim().length == 0) {input.style.color = "#888";input.value = input.hintText;if (input.className.indexOf(HintClass) != -1) {input.className = HintClass;} else {input.className = miniHintClass;}}}
var image_path = "img/";var image_up = "arrow-up.gif";var image_down = "arrow-down.gif";var image_none = "arrow-none.gif";var europeandate = true;var alternate_row_colors = true;addEvent(window, "load", sortables_init);var SORT_COLUMN_INDEX;var thead = false;
function sortables_init() {if (!document.getElementsByTagName) {return;}tbls = document.getElementsByTagName("table");for (ti = 0; ti < tbls.length; ti++) {thisTbl = tbls[ti];if (((" " + thisTbl.className + " ").indexOf("sortable") != -1) && (thisTbl.id)) {ts_makeSortable(thisTbl);}}}
function ts_makeSortable(t) {if (t.rows && t.rows.length > 0) {if (t.tHead && t.tHead.rows.length > 0) {var firstRow = t.tHead.rows[t.tHead.rows.length - 1];thead = true;} else {var firstRow = t.rows[0];}}if (!firstRow) {return;}for (var i = 0; i < firstRow.cells.length; i++) {var cell = firstRow.cells[i];var txt = ts_getInnerText(cell);if (cell.className != "unsortable" && cell.className.indexOf("unsortable") == -1) {cell.innerHTML = "<a href=\"#\" class=\"sortheader\" onclick=\"ts_resortTable(this, " + i + ");return false;\">" + txt + "<span class=\"sortarrow\"> <img src=\"" + image_path + image_none + "\" alt=\"↓\"/></span></a>";}}if (alternate_row_colors) {alternate(t);}}
function ts_getInnerText(el) {if (typeof el == "string") {return el;}if (typeof el == "undefined") {return el;}if (el.innerText) {return el.innerText;}var str = "";var cs = el.childNodes;var l = cs.length;for (var i = 0; i < l; i++) {switch (cs[i].nodeType) {case 1:str += ts_getInnerText(cs[i]);break;case 3:str += cs[i].nodeValue;break;default:;}}return str;}
function ts_resortTable(lnk, clid) {var span;for (var ci = 0; ci < lnk.childNodes.length; ci++) {if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == "span") {span = lnk.childNodes[ci];}}var spantext = ts_getInnerText(span);var td = lnk.parentNode;var column = clid || td.cellIndex;var t = getParent(td, "TABLE");if (t.rows.length <= 1) {return;}var itm = "";var i = 1;while (itm == "" && i < t.tBodies[0].rows.length) {var itm = ts_getInnerText(t.tBodies[0].rows[i].cells[column]);itm = trim(itm);if (itm.substr(0, 4) == "<!--" || itm.length == 0) {itm = "";}i++;}if (itm == "") {return;}sortfn = ts_sort_caseinsensitive;if (itm.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) {sortfn = ts_sort_date;}if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) {sortfn = ts_sort_date;}if (itm.match(/^-?[£$€Û¢´]\d/)) {sortfn = ts_sort_numeric;}if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) {sortfn = ts_sort_numeric;}SORT_COLUMN_INDEX = column;var firstRow = new Array();var newRows = new Array();for (k = 0; k < t.tBodies.length; k++) {for (i = 0; i < t.tBodies[k].rows[0].length; i++) {firstRow[i] = t.tBodies[k].rows[0][i];}}for (k = 0; k < t.tBodies.length; k++) {if (!thead) {for (j = 1; j < t.tBodies[k].rows.length; j++) {newRows[j - 1] = t.tBodies[k].rows[j];}} else {for (j = 0; j < t.tBodies[k].rows.length; j++) {newRows[j] = t.tBodies[k].rows[j];}}}newRows.sort(sortfn);if (span.getAttribute("sortdir") == "down") {ARROW = " <img src=\"" + image_path + image_down + "\" alt=\"↓\"/>";newRows.reverse();span.setAttribute("sortdir", "up");} else {ARROW = " <img src=\"" + image_path + image_up + "\" alt=\"↑\"/>";span.setAttribute("sortdir", "down");}for (i = 0; i < newRows.length; i++) {if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf("sortbottom") == -1))) {t.tBodies[0].appendChild(newRows[i]);}}for (i = 0; i < newRows.length; i++) {if (newRows[i].className && (newRows[i].className.indexOf("sortbottom") != -1)) {t.tBodies[0].appendChild(newRows[i]);}}var allspans = document.getElementsByTagName("span");for (var ci = 0; ci < allspans.length; ci++) {if (allspans[ci].className == "sortarrow") {if (getParent(allspans[ci], "table") == getParent(lnk, "table")) {allspans[ci].innerHTML = " <img src=\"" + image_path + image_none + "\" alt=\"↓\"/>";}}}span.innerHTML = ARROW;alternate(t);}
function getParent(el, pTagName) {if (el == null) {return null;} else {if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) {return el;} else {return getParent(el.parentNode, pTagName);}}}
function sort_date(date) {dt = "00000000";if (date.length == 11) {mtstr = date.substr(3, 3);mtstr = mtstr.toLowerCase();switch (mtstr) {case "jan":var mt = "01";break;case "feb":var mt = "02";break;case "mar":var mt = "03";break;case "apr":var mt = "04";break;case "may":var mt = "05";break;case "jun":var mt = "06";break;case "jul":var mt = "07";break;case "aug":var mt = "08";break;case "sep":var mt = "09";break;case "oct":var mt = "10";break;case "nov":var mt = "11";break;case "dec":var mt = "12";break;default:;}dt = date.substr(7, 4) + mt + date.substr(0, 2);return dt;} else {if (date.length == 10) {if (europeandate == false) {dt = date.substr(6, 4) + date.substr(0, 2) + date.substr(3, 2);return dt;} else {dt = date.substr(6, 4) + date.substr(3, 2) + date.substr(0, 2);return dt;}} else {if (date.length == 8) {yr = date.substr(6, 2);if (parseInt(yr) < 50) {yr = "20" + yr;} else {yr = "19" + yr;}if (europeandate == true) {dt = yr + date.substr(3, 2) + date.substr(0, 2);return dt;} else {dt = yr + date.substr(0, 2) + date.substr(3, 2);return dt;}}}}return dt;}
function ts_sort_date(a, b) {dt1 = sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));dt2 = sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));if (dt1 == dt2) {return 0;}if (dt1 < dt2) {return -1;}return 1;}
function ts_sort_numeric(a, b) {var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);aa = clean_num(aa);var bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);bb = clean_num(bb);return compare_numeric(aa, bb);}
function compare_numeric(a, b) {var a = parseFloat(a);a = (isNaN(a) ? 0 : a);var b = parseFloat(b);b = (isNaN(b) ? 0 : b);return a - b;}
function ts_sort_caseinsensitive(a, b) {aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase();bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase();if (aa == bb) {return 0;}if (aa < bb) {return -1;}return 1;}
function ts_sort_default(a, b) {aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);if (aa == bb) {return 0;}if (aa < bb) {return -1;}return 1;}
function addEvent(elm, evType, fn, useCapture) {if (elm.addEventListener) {elm.addEventListener(evType, fn, useCapture);return true;} else {if (elm.attachEvent) {var r = elm.attachEvent("on" + evType, fn);return r;} else {alert("Handler could not be removed");}}}
function clean_num(str) {str = str.replace(new RegExp(/[^-?0-9.]/g), "");return str;}
function trim(s) {return s.replace(/^\s+|\s+$/g, "");}
function alternate(table) {var tableBodies = table.getElementsByTagName("tbody");for (var i = 0; i < tableBodies.length; i++) {var tableRows = tableBodies[i].getElementsByTagName("tr");for (var j = 0; j < tableRows.length; j++) {if ((j % 2) == 0) {if (!(tableRows[j].className.indexOf("odd") == -1)) {tableRows[j].className = tableRows[j].className.replace("odd", "even");} else {if (tableRows[j].className.indexOf("even") == -1) {tableRows[j].className += " even";}}} else {if (!(tableRows[j].className.indexOf("even") == -1)) {tableRows[j].className = tableRows[j].className.replace("even", "odd");} else {if (tableRows[j].className.indexOf("odd") == -1) {tableRows[j].className += " odd";}}}}}}
var jsonParse = (function () {var number = "(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)";var oneChar = "(?:[^\\0-\\x08\\x0a-\\x1f\"\\\\]|\\\\(?:[\"/\\\\bfnrt]|u[0-9A-Fa-f]{4}))";var string = "(?:\"" + oneChar + "*\")";var jsonToken = new RegExp("(?:false|true|null|[\\{\\}\\[\\]]" + "|" + number + "|" + string + ")", "g");var escapeSequence = new RegExp("\\\\(?:([^u])|u(.{4}))", "g");var escapes = {'"':"\"", '/':"/", '\\':"\\", b:"\b", f:"\f", n:"\n", r:"\r", t:"\t"};
function unescapeOne(_, ch, hex) {return ch ? escapes[ch] : String.fromCharCode(parseInt(hex, 16));}
var EMPTY_STRING = new String("");var SLASH = "\\";var firstTokenCtors = {'{':Object, '[':Array};return (function (json) {var toks = json.match(jsonToken);var result;var tok = toks[0];if ("{" === tok) {result = {};} else {if ("[" === tok) {result = [];} else {throw new Error(tok);}}var key;var stack = [result];for (var i = 1, n = toks.length; i < n; ++i) {tok = toks[i];var cont;switch (tok.charCodeAt(0)) {default:cont = stack[0];cont[key || cont.length] = +(tok);key = void 0;break;case 34:tok = tok.substring(1, tok.length - 1);if (tok.indexOf(SLASH) !== -1) {tok = tok.replace(escapeSequence, unescapeOne);}cont = stack[0];if (!key) {if (cont instanceof Array) {key = cont.length;} else {key = tok || EMPTY_STRING;break;}}cont[key] = tok;key = void 0;break;case 91:cont = stack[0];stack.unshift(cont[key || cont.length] = []);key = void 0;break;case 93:stack.shift();break;case 102:cont = stack[0];cont[key || cont.length] = false;key = void 0;break;case 110:cont = stack[0];cont[key || cont.length] = null;key = void 0;break;case 116:cont = stack[0];cont[key || cont.length] = true;key = void 0;break;case 123:cont = stack[0];stack.unshift(cont[key || cont.length] = {});key = void 0;break;case 125:stack.shift();break;}}if (stack.length) {throw new Error();}return result;});})();var hexcase = 0;var b64pad = "";var chrsz = 8;
function hex_md5(s) {return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s) {return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s) {return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) {return binl2hex(core_hmac_md5(key, data));}
function b64_hmac_md5(key, data) {return binl2b64(core_hmac_md5(key, data));}
function str_hmac_md5(key, data) {return binl2str(core_hmac_md5(key, data));}
function md5_vm_test() {return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";}
function core_md5(x, len) {x[len >> 5] |= 128 << ((len) % 32);x[(((len + 64) >>> 9) << 4) + 14] = len;var a = 1732584193;var b = -271733879;var c = -1732584194;var d = 271733878;for (var i = 0; i < x.length; i += 16) {var olda = a;var oldb = b;var oldc = c;var oldd = d;a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);a = safe_add(a, olda);b = safe_add(b, oldb);c = safe_add(c, oldc);d = safe_add(d, oldd);}return Array(a, b, c, d);}
function md5_cmn(q, a, b, x, s, t) {return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);}
function md5_ff(a, b, c, d, x, s, t) {return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);}
function md5_gg(a, b, c, d, x, s, t) {return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);}
function md5_hh(a, b, c, d, x, s, t) {return md5_cmn(b ^ c ^ d, a, b, x, s, t);}
function md5_ii(a, b, c, d, x, s, t) {return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);}
function core_hmac_md5(key, data) {var bkey = str2binl(key);if (bkey.length > 16) {bkey = core_md5(bkey, key.length * chrsz);}var ipad = Array(16), opad = Array(16);for (var i = 0; i < 16; i++) {ipad[i] = bkey[i] ^ 909522486;opad[i] = bkey[i] ^ 1549556828;}var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);return core_md5(opad.concat(hash), 640);}
function safe_add(x, y) {var lsw = (x & 65535) + (y & 65535);var msw = (x >> 16) + (y >> 16) + (lsw >> 16);return (msw << 16) | (lsw & 65535);}
function bit_rol(num, cnt) {return (num << cnt) | (num >>> (32 - cnt));}
function str2binl(str) {var bin = Array();var mask = (1 << chrsz) - 1;for (var i = 0; i < str.length * chrsz; i += chrsz) {bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32);}return bin;}
function binl2str(bin) {var str = "";var mask = (1 << chrsz) - 1;for (var i = 0; i < bin.length * 32; i += chrsz) {str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask);}return str;}
function binl2hex(binarray) {var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";var str = "";for (var i = 0; i < binarray.length * 4; i++) {str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 15);}return str;}
function binl2b64(binarray) {var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str = "";for (var i = 0; i < binarray.length * 4; i += 3) {var triplet = (((binarray[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255);for (var j = 0; j < 4; j++) {if (i * 8 + j * 6 > binarray.length * 32) {str += b64pad;} else {str += tab.charAt((triplet >> 6 * (3 - j)) & 63);}}}return str;}