mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
git-svn-id: http://www.observium.org/svn/observer/trunk@2610 61d68cd4-352d-0410-923a-c4978735b2b8
213 lines
11 KiB
JavaScript
213 lines
11 KiB
JavaScript
var ie = document.all != null;var moz = !ie && document.getElementById != null && document.layers == null;function bs_isNull(theVar) {
|
|
if (typeof(theVar) == 'undefined') return true;if (theVar == null) return true;return false;}
|
|
function bs_isObject(theVar) {
|
|
ret = false;if (typeof(theVar) == 'object') {
|
|
ret = !bs_isNull(theVar);}
|
|
return ret;}
|
|
function bs_isEmpty(theVar) {
|
|
if (bs_isNull(theVar)) return true;if (theVar == '') return true;return false;}
|
|
function bs_typeOf(theVar) {
|
|
ret = 'undefined';switch (typeof(theVar)) {
|
|
case 'boolean': ret = 'boolean'; break;case 'number': ret = 'number'; break;case 'string': ret = 'string'; break;case 'function': ret = 'function'; break;case 'object':
|
|
if (bs_isNull(theVar)) {
|
|
ret = 'null';break;}
|
|
if (theVar.concat && theVar.join && theVar.sort && theVar.pop) {
|
|
ret = 'array';break;}
|
|
break;case 'undefined':
|
|
default:
|
|
ret = 'undefined';}
|
|
return ret;}
|
|
function bs_arrayMerge(obj1, obj2) {
|
|
if (!bs_isObject(obj1) || !bs_isObject(obj2)) return false;for (var key in obj2) {obj1[key] = obj2[key];}
|
|
return obj1;}
|
|
function bs_arrayFlip(aArray) {
|
|
var aHash = new Object();type = bs_typeOf(aArray);if (type == 'array') {
|
|
for (var i=0; i<aArray.length; i++) {
|
|
aHash[aArray[i]] = true;}
|
|
} else if (type == 'string') {
|
|
if (aArray != '') {
|
|
aHash[aArray] = true;}
|
|
}
|
|
return aHash;}
|
|
function queryStringToHash(queryString) {
|
|
if (typeof(queryString) == 'undefined') {
|
|
var queryString = window.location.search;}
|
|
var ret = new Array;if (bs_isEmpty(queryString)) return ret;queryString = queryString.substr(1);if (bs_isEmpty(queryString)) return ret;var junks = queryString.split('&');for (var i=0; i<junks.length; i++) {
|
|
var x = junks[i].split('=');if (x.length == 2) {
|
|
ret[x[0]] = x[1];} else {
|
|
ret[x[0]] = '';}
|
|
}
|
|
return ret;}
|
|
function dump(theVar, doReturn, showFunctions, _out, _indent, _numCall) {
|
|
if (!_indent) {
|
|
_indent = ' ';_bsDumpOverallNumCall = 1;} else {
|
|
_indent += ' ';_bsDumpOverallNumCall++;}
|
|
if (_bsDumpOverallNumCall < 8) {
|
|
if (_out) {
|
|
var isInternal = true;} else {
|
|
_out = '';_numCall = 1;}
|
|
var goOn = true;if (_numCall > 10) {
|
|
goOn = false;if (!doReturn) {
|
|
goOn = confirm("There have been 10 recursive calls so far. Maybe you have an endless loop. Do you want to continue?");}
|
|
if (!goOn) {
|
|
_out += _indent + "error/warning: nesting levels too deep (>10 times)!\n";} else {
|
|
_numCall = 0;}
|
|
}
|
|
if (goOn) {
|
|
switch (typeof(theVar)) {
|
|
case 'object':
|
|
for (var key in theVar) {
|
|
switch (typeof(theVar[key])) {
|
|
case 'function':
|
|
if (typeof(showFunctions) == 'boolean') {
|
|
if (showFunctions) {
|
|
_out += _indent + 'function "' + key + '" => ' + theVar[key] + "\n";} else {
|
|
_out += _indent + 'function "' + key + "\n";}
|
|
} else {
|
|
if (showFunctions == 2) {
|
|
_out += _indent + 'function "' + key + '" => ' + theVar[key] + "\n";} else if (showFunctions == 1) {
|
|
_out += _indent + 'function "' + key + "\n";} else {
|
|
}
|
|
}
|
|
break;case 'undefined':
|
|
break;case 'object':
|
|
_out += _indent + key;if (theVar[key] instanceof Array) {
|
|
_out += ' (Array) => \n';} else if (theVar[key] instanceof Date) {
|
|
_out += ' (Date) => '+ theVar[key] +'\n';} else{
|
|
_out += ' (Object) => \n';}
|
|
_out = dump(theVar[key], doReturn, showFunctions, _out, _indent + " ", _numCall+1);break;case 'number':
|
|
if (theVar instanceof Date) alert('date');default:
|
|
_out += _indent + typeof(theVar[key]) + ' "' + key + '" => ' + theVar[key] + "\n";}
|
|
}
|
|
break;default:
|
|
_out += _indent + typeof(theVar) + ' => ' + theVar + "\n";}
|
|
}
|
|
}
|
|
if (isInternal || doReturn) {
|
|
return _out;} else {
|
|
alert(_out);return;}
|
|
}
|
|
function Position(x, y) {
|
|
this.x = x;this.y = y;};function getAbsolutePos(el, stopIfAbsolute) {
|
|
if (bs_isNull(el)) {
|
|
var res = new Position(0, 0);return res;}
|
|
var res = new Position(el.offsetLeft, el.offsetTop);if (el.offsetParent) {
|
|
if ((stopIfAbsolute != true ) || ((el.offsetParent.currentStyle.position != 'absolute') && (el.offsetParent.currentStyle.position != 'relative') && (el.offsetParent.currentStyle.overflow != 'auto') && (el.offsetParent.currentStyle.overflow != 'scroll'))) {
|
|
var tmp = getAbsolutePos(el.offsetParent, stopIfAbsolute);res.x += tmp.x;res.y += tmp.y;}
|
|
}
|
|
return res;};if ("undefined" != typeof(HTMLElement)) {
|
|
if ("undefined" == typeof(HTMLElement.insertAdjacentElement)) {
|
|
HTMLElement.prototype.insertAdjacentElement = function(where, parsedNode) {
|
|
switch(where){
|
|
case 'beforeBegin':
|
|
this.parentNode.insertBefore(parsedNode,this)
|
|
break;case 'afterBegin':
|
|
this.insertBefore(parsedNode,this.firstChild);break;case 'beforeEnd':
|
|
this.appendChild(parsedNode);break;case 'afterEnd':
|
|
if (this.nextSibling) this.parentNode.insertBefore(parsedNode,this.nextSibling);else this.parentNode.appendChild(parsedNode);break;}
|
|
}
|
|
}
|
|
}
|
|
if (moz) {
|
|
extendEventObject();emulateAttachEvent();emulateEventHandlers(["click", "dblclick", "mouseover", "mouseout",
|
|
"mousedown", "mouseup", "mousemove",
|
|
"keydown", "keypress", "keyup"]);emulateCurrentStyle(["left", "right", "top", "bottom", "width", "height"]);emulateHTMLModel();Event.LEFT = 1;Event.MIDDLE = 2;Event.RIGHT = 3;}
|
|
else {
|
|
Event = {};Event.LEFT = 1;Event.MIDDLE = 4;Event.RIGHT = 2;}
|
|
function extendEventObject() {
|
|
Event.prototype.__defineSetter__("returnValue", function (b) {
|
|
if (!b) this.preventDefault();return b;});Event.prototype.__defineSetter__("cancelBubble", function (b) {
|
|
if (b) this.stopPropagation();return b;});Event.prototype.__defineGetter__("srcElement", function () {
|
|
var node = this.target;while (node.nodeType != 1) node = node.parentNode;return node;});Event.prototype.__defineGetter__("fromElement", function () {
|
|
var node;if (this.type == "mouseover")
|
|
node = this.relatedTarget;else if (this.type == "mouseout")
|
|
node = this.target;if (!node) return;while (node.nodeType != 1) node = node.parentNode;return node;});Event.prototype.__defineGetter__("toElement", function () {
|
|
var node;if (this.type == "mouseout")
|
|
node = this.relatedTarget;else if (this.type == "mouseover")
|
|
node = this.target;if (!node) return;while (node.nodeType != 1) node = node.parentNode;return node;});Event.prototype.__defineGetter__("offsetX", function () {
|
|
return this.layerX;});Event.prototype.__defineGetter__("offsetY", function () {
|
|
return this.layerY;});}
|
|
function emulateAttachEvent() {
|
|
HTMLDocument.prototype.attachEvent =
|
|
HTMLElement.prototype.attachEvent = function (sType, fHandler) {
|
|
var shortTypeName = sType.replace(/on/, "");
|
|
fHandler._ieEmuEventHandler = function (e) {
|
|
window.event = e;return fHandler();};this.addEventListener(shortTypeName, fHandler._ieEmuEventHandler, false);};HTMLDocument.prototype.detachEvent =
|
|
HTMLElement.prototype.detachEvent = function (sType, fHandler) {
|
|
var shortTypeName = sType.replace(/on/, "");
|
|
if (typeof fHandler._ieEmuEventHandler == "function")
|
|
this.removeEventListener(shortTypeName, fHandler._ieEmuEventHandler, false);else
|
|
this.removeEventListener(shortTypeName, fHandler, true);};}
|
|
function emulateEventHandlers(eventNames) {
|
|
for (var i = 0; i < eventNames.length; i++) {
|
|
document.addEventListener(eventNames[i], function (e) {
|
|
window.event = e;}, true);}
|
|
}
|
|
function emulateAllModel() {
|
|
var allGetter = function () {
|
|
var a = this.getElementsByTagName("*");var node = this;a.tags = function (sTagName) {
|
|
return node.getElementsByTagName(sTagName);};return a;};HTMLDocument.prototype.__defineGetter__("all", allGetter);HTMLElement.prototype.__defineGetter__("all", allGetter);}
|
|
function extendElementModel() {
|
|
HTMLElement.prototype.__defineGetter__("parentElement", function () {
|
|
if (this.parentNode == this.ownerDocument) return null;return this.parentNode;});HTMLElement.prototype.__defineGetter__("children", function () {
|
|
var tmp = [];var j = 0;var n;for (var i = 0; i < this.childNodes.length; i++) {
|
|
n = this.childNodes[i];if (n.nodeType == 1) {
|
|
tmp[j++] = n;if (n.name) {
|
|
if (!tmp[n.name])
|
|
tmp[n.name] = [];tmp[n.name][tmp[n.name].length] = n;}
|
|
if (n.id)
|
|
tmp[n.id] = n
|
|
}
|
|
}
|
|
return tmp;});HTMLElement.prototype.contains = function (oEl) {
|
|
if (oEl == this) return true;if (oEl == null) return false;return this.contains(oEl.parentNode);};}
|
|
function emulateCurrentStyle(properties) {
|
|
HTMLElement.prototype.__defineGetter__("currentStyle", function () {
|
|
var cs = {};var el = this;for (var i = 0; i < properties.length; i++) {
|
|
cs.__defineGetter__(properties[i], encapsulateObjects(el, properties[i]));}
|
|
return cs;});}
|
|
function encapsulateObjects(el, sProperty) {
|
|
return function () {
|
|
return document.defaultView.getComputedStyle(el, null).getPropertyValue(sProperty);};}
|
|
function emulateHTMLModel() {
|
|
function convertTextToHTML(s) {
|
|
s = s.replace(/\&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\n/g, "<BR>");
|
|
while (/\s\s/.test(s))
|
|
s = s.replace(/\s\s/, " ");
|
|
return s.replace(/\s/g, " ");
|
|
}
|
|
HTMLElement.prototype.insertAdjacentHTML = function (sWhere, sHTML) {
|
|
var df;var r = this.ownerDocument.createRange();switch (String(sWhere).toLowerCase()) {
|
|
case "beforebegin":
|
|
r.setStartBefore(this);df = r.createContextualFragment(sHTML);this.parentNode.insertBefore(df, this);break;case "afterbegin":
|
|
r.selectNodeContents(this);r.collapse(true);df = r.createContextualFragment(sHTML);this.insertBefore(df, this.firstChild);break;case "beforeend":
|
|
r.selectNodeContents(this);r.collapse(false);df = r.createContextualFragment(sHTML);this.appendChild(df);break;case "afterend":
|
|
r.setStartAfter(this);df = r.createContextualFragment(sHTML);this.parentNode.insertBefore(df, this.nextSibling);break;}
|
|
};HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
|
|
var r = this.ownerDocument.createRange();r.setStartBefore(this);var df = r.createContextualFragment(sHTML);this.parentNode.replaceChild(df, this);return sHTML;});HTMLElement.prototype.__defineGetter__("canHaveChildren", function () {
|
|
switch (this.tagName) {
|
|
case "AREA":
|
|
case "BASE":
|
|
case "BASEFONT":
|
|
case "COL":
|
|
case "FRAME":
|
|
case "HR":
|
|
case "IMG":
|
|
case "BR":
|
|
case "INPUT":
|
|
case "ISINDEX":
|
|
case "LINK":
|
|
case "META":
|
|
case "PARAM":
|
|
return false;}
|
|
return true;});HTMLElement.prototype.__defineGetter__("outerHTML", function () {
|
|
var attr, attrs = this.attributes;var str = "<" + this.tagName;for (var i = 0; i < attrs.length; i++) {
|
|
attr = attrs[i];if (attr.specified)
|
|
str += " " + attr.name + '="' + attr.value + '"';}
|
|
if (!this.canHaveChildren)
|
|
return str + ">";return str + ">" + this.innerHTML + "</" + this.tagName + ">";});HTMLElement.prototype.__defineSetter__("innerText", function (sText) {
|
|
this.innerHTML = convertTextToHTML(sText);return sText;});var tmpGet;HTMLElement.prototype.__defineGetter__("innerText", tmpGet = function () {
|
|
var r = this.ownerDocument.createRange();r.selectNodeContents(this);return r.toString();});HTMLElement.prototype.__defineSetter__("outerText", function (sText) {
|
|
this.outerHTML = convertTextToHTML(sText);return sText;});HTMLElement.prototype.__defineGetter__("outerText", tmpGet);HTMLElement.prototype.insertAdjacentText = function (sWhere, sText) {
|
|
this.insertAdjacentHTML(sWhere, convertTextToHTML(sText));};}
|