// inspired by PACSuppport.js, 2003-2004 by Apple Computer, Inc., all rights reserved function dnsResolve(host) {
if (host == '<%=context_host%>' || host == '<%=context_ip%>') return '<%=context_ip%>'; throw 'only DNS for initial host, not '+host;
} function myIpAddress() {
return '<%=context_self%>';
} function isPlainHostName(host) {
return (host.indexOf('.') == -1 ? true : false);
} function dnsDomainIs(host, domain) {
var h = host.toLowerCase(); var d = domain.toLowerCase(); var sub = h.substring(h.length - d.length, h.length); if (sub == d) return true; return false;
} function localHostOrDomainIs(host, hostdom) {
var h1 = host.toLowerCase(); var h2 = hostdom.toLowerCase(); return ((h1 == h2) || (isPlainHostName(h1) & !isPlainHostName(h2))) ? true : false;
} function isResolvable(host) {
var ip = dnsResolve(host); return ((typeof ip == "string") && ip.length) ? true : false;
} function isInNet(host, pattern, mask) {
var ip = dnsResolve(host); if (ip) { var p = pattern.split('.'); var m = mask.split('.'); var a = ip.split('.'); if ((p.length == m.length) && (m.length == a.length)) { for (i = 0; i < p.length; i++) { if ((p[i]& m[i]) != (m[i]& a[i])) return false; } return true; } } return false;
} function dnsDomainLevels(host) {
var parts = host.split('.'); return parts.length - 1;
} function shExpMatch(str, shexp) {
if (typeof str != "string" || typeof shexp != "string") return false; if (shexp == "*") return true; if (str == "" && shexp == "") return true; str = str.toLowerCase(); shexp = shexp.toLowerCase(); var len = str.length; var pieces = shexp.split('*'); var start = 0; for (i = 0; i < pieces.length; i++) { if (pieces[i] == "") continue; if (start > len) return false; start = str.indexOf(pieces[i]); if (start == -1) return false; start += pieces[i].length; str = str.substring(start, len); len = str.length; } i--; if ((pieces[i] == "") || (str == "")) return true; return false;
} function weekdayRange(wd1, wd2, gmt) {
var today = new Date(); var days = "SUNMONTUEWEDTHUFRISAT"; wd1 = wd1.toUpperCase(); if (wd2 == undefined) wd2 = wd1; else wd2 = wd2.toUpperCase(); var d1 = days.indexOf(wd1); var d2 = days.indexOf(wd2); if ((d2 == -1) && (wd2 == "GMT")) { gmt = wd2; d2 = d1; } if ((d1 == -1) || (d2 == -1)) return false; d1 = d1 / 3; d2 = d2 / 3; if (gmt == "GMT") today = today.getUTCDay(); else today = today.getDay(); if ((d1 <= d2) && (today >= d1) && (today <= d2)) return true; if ((d2 < d1) && ((today <= d2) || (today >= d1))) return true; return false;
} function dateRange() {
var today = new Date(); var num = arguments.length; var gmt = arguments[num - 1]; if (typeof gmt != "string") gmt = false; else { gmt = gmt.toUpperCase(); if (gmt != "GMT") gmt = false; else { gmt = true; num--; } } if (!num || (num > 6)) return false; var d1 = 0; var d2 = 0; var m1 = 0; var m2 = 0; var y1 = 0; var y2 = 0; for (i = 0; i < num; i++) { var arg = arguments[i]; if (typeof arg == "number") { if (arg > 31) { if (!y1) y1 = arg; else if (!y2) y2 = arg; else return false; } else if (!arg) return false; else if (!d1) d1 = arg; else if (!d2) d2 = arg; else return false; } else if (typeof arg == "string") { var months = "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"; arg = arg.toUpperCase(); arg = months.indexOf(arg); if (arg == -1) return false; arg /= 3; arg += 1; if (!m1) m1 = arg; else if (!m2) m2 = arg; else return false; } else return false; } if (!y1) y1 = gmt ? today.getUTCFullYear() : today.getFullYear(); if (!y2) y2 = y1; if (!m1) m1 = (gmt ? today.getUTCMonth() : today.getMonth()) + 1; if (!m2) m2 = m1; if (!d1) d1 = gmt ? today.getUTCDate() : today.getDate(); if (!d2) d2 = d1; var date1; var date2; if (gmt) { date1 = Date.UTC(y1, m1 - 1, d1, 0, 0, 0, 0); date2 = Date.UTC(y2, m2 - 1, d2, 23, 59, 59, 999); } else { date1 = (Date(y1, m1 - 1, d1, 0, 0, 0, 0)).valueOf(); date2 = (Date(y2, m2 - 1, d2, 23, 59, 59, 999)).valueOf(); } today = today.valueOf(); return ((date1 <= today) && (today <= date2));
} function timeRange() {
var date1 = new Date(); var today = new Date(); var date2 = new Date(); var num = arguments.length; var gmt = arguments[num - 1]; if (typeof gmt != "string") gmt = false; else { gmt = gmt.toUpperCase(); if (gmt != "GMT") gmt = false; else { gmt = true; num--; } } if (!num || (num > 6) || ((num % 2) && (num != 1))) return false; date1.setMinutes(0); date1.setSeconds(0); date1.setMilliseconds(0); date2.setMinutes(59); date2.setSeconds(59); date2.setMilliseconds(999); for (i = 0; i < (num / 2); i++) { var arg = arguments[i]; if (gmt) { switch (i) { case 0: date1.setUTCHours(arg); date2.setUTCHours(arg); break; case 1: date1.setUTCMinutes(arg); date2.setUTCMinutes(arg); break; case 2: date1.setUTCSeconds(arg); date2.setUTCSeconds(arg); break; } } else { switch (i) { case 0: date1.setHours(arg); date2.setHours(arg); break; case 1: date1.setMinutes(arg); date2.setMinutes(arg); break; case 2: date1.setSeconds(arg); date2.setSeconds(arg); break; } } } if (num != 1) { date2.setMinutes(0); date2.setSeconds(0); date2.setMilliseconds(0); for (i = 0; i < (num / 2); i++) { var arg = arguments[(num / 2) + i]; if (gmt) { switch (i) { case 0: date2.setUTCHours(arg); break; case 1: date2.setUTCMinutes(arg); break; case 2: date2.setUTCSeconds(arg); break; } } else { switch (i) { case 0: date2.setHours(arg); break; case 1: date2.setMinutes(arg); break; case 2: date2.setSeconds(arg); break; } } } } today = today.valueOf(); date1 = date1.valueOf(); date2 = date2.valueOf(); if (date2 < date1) date2 += 86400000; return ((date1 <= today) && (today <= date2));
}