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));};}
 |