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@292 61d68cd4-352d-0410-923a-c4978735b2b8
		
			
				
	
	
		
			194 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			194 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Simple AJAX Code-Kit (SACK) v1.6.1 */
 | 
						|
/* ©2005 Gregory Wild-Smith */
 | 
						|
/* www.twilightuniverse.com */
 | 
						|
/* Software licenced under a modified X11 licence,
 | 
						|
   see documentation or authors website for more details */
 | 
						|
 | 
						|
function sack(file) {
 | 
						|
	this.xmlhttp = null;
 | 
						|
 | 
						|
	this.resetData = function() {
 | 
						|
		this.method = "POST";
 | 
						|
  		this.queryStringSeparator = "?";
 | 
						|
		this.argumentSeparator = "&";
 | 
						|
		this.URLString = "";
 | 
						|
		this.encodeURIString = true;
 | 
						|
  		this.execute = false;
 | 
						|
  		this.element = null;
 | 
						|
		this.elementObj = null;
 | 
						|
		this.requestFile = file;
 | 
						|
		this.vars = new Object();
 | 
						|
		this.responseStatus = new Array(2);
 | 
						|
  	};
 | 
						|
 | 
						|
	this.resetFunctions = function() {
 | 
						|
  		this.onLoading = function() { };
 | 
						|
  		this.onLoaded = function() { };
 | 
						|
  		this.onInteractive = function() { };
 | 
						|
  		this.onCompletion = function() { };
 | 
						|
  		this.onError = function() { };
 | 
						|
		this.onFail = function() { };
 | 
						|
	};
 | 
						|
 | 
						|
	this.reset = function() {
 | 
						|
		this.resetFunctions();
 | 
						|
		this.resetData();
 | 
						|
	};
 | 
						|
 | 
						|
	this.createAJAX = function() {
 | 
						|
		try {
 | 
						|
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 | 
						|
		} catch (e1) {
 | 
						|
			try {
 | 
						|
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 | 
						|
			} catch (e2) {
 | 
						|
				this.xmlhttp = null;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		if (! this.xmlhttp) {
 | 
						|
			if (typeof XMLHttpRequest != "undefined") {
 | 
						|
				this.xmlhttp = new XMLHttpRequest();
 | 
						|
			} else {
 | 
						|
				this.failed = true;
 | 
						|
			}
 | 
						|
		}
 | 
						|
	};
 | 
						|
 | 
						|
	this.setVar = function(name, value){
 | 
						|
		this.vars[name] = Array(value, false);
 | 
						|
	};
 | 
						|
 | 
						|
	this.encVar = function(name, value, returnvars) {
 | 
						|
		if (true == returnvars) {
 | 
						|
			return Array(encodeURIComponent(name), encodeURIComponent(value));
 | 
						|
		} else {
 | 
						|
			this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	this.processURLString = function(string, encode) {
 | 
						|
		encoded = encodeURIComponent(this.argumentSeparator);
 | 
						|
		regexp = new RegExp(this.argumentSeparator + "|" + encoded);
 | 
						|
		varArray = string.split(regexp);
 | 
						|
		for (i = 0; i < varArray.length; i++){
 | 
						|
			urlVars = varArray[i].split("=");
 | 
						|
			if (true == encode){
 | 
						|
				this.encVar(urlVars[0], urlVars[1]);
 | 
						|
			} else {
 | 
						|
				this.setVar(urlVars[0], urlVars[1]);
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	this.createURLString = function(urlstring) {
 | 
						|
		if (this.encodeURIString && this.URLString.length) {
 | 
						|
			this.processURLString(this.URLString, true);
 | 
						|
		}
 | 
						|
 | 
						|
		if (urlstring) {
 | 
						|
			if (this.URLString.length) {
 | 
						|
				this.URLString += this.argumentSeparator + urlstring;
 | 
						|
			} else {
 | 
						|
				this.URLString = urlstring;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		// prevents caching of URLString
 | 
						|
		this.setVar("rndval", new Date().getTime());
 | 
						|
 | 
						|
		urlstringtemp = new Array();
 | 
						|
		for (key in this.vars) {
 | 
						|
			if (false == this.vars[key][1] && true == this.encodeURIString) {
 | 
						|
				encoded = this.encVar(key, this.vars[key][0], true);
 | 
						|
				delete this.vars[key];
 | 
						|
				this.vars[encoded[0]] = Array(encoded[1], true);
 | 
						|
				key = encoded[0];
 | 
						|
			}
 | 
						|
 | 
						|
			urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
 | 
						|
		}
 | 
						|
		if (urlstring){
 | 
						|
			this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
 | 
						|
		} else {
 | 
						|
			this.URLString += urlstringtemp.join(this.argumentSeparator);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	this.runResponse = function() {
 | 
						|
		eval(this.response);
 | 
						|
	}
 | 
						|
 | 
						|
	this.runAJAX = function(urlstring) {
 | 
						|
		if (this.failed) {
 | 
						|
			this.onFail();
 | 
						|
		} else {
 | 
						|
			this.createURLString(urlstring);
 | 
						|
			if (this.element) {
 | 
						|
				this.elementObj = document.getElementById(this.element);
 | 
						|
			}
 | 
						|
			if (this.xmlhttp) {
 | 
						|
				var self = this;
 | 
						|
				if (this.method == "GET") {
 | 
						|
					totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
 | 
						|
					this.xmlhttp.open(this.method, totalurlstring, true);
 | 
						|
				} else {
 | 
						|
					this.xmlhttp.open(this.method, this.requestFile, true);
 | 
						|
					try {
 | 
						|
						this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
 | 
						|
					} catch (e) { }
 | 
						|
				}
 | 
						|
 | 
						|
				this.xmlhttp.onreadystatechange = function() {
 | 
						|
					switch (self.xmlhttp.readyState) {
 | 
						|
						case 1:
 | 
						|
							self.onLoading();
 | 
						|
							break;
 | 
						|
						case 2:
 | 
						|
							self.onLoaded();
 | 
						|
							break;
 | 
						|
						case 3:
 | 
						|
							self.onInteractive();
 | 
						|
							break;
 | 
						|
						case 4:
 | 
						|
							self.response = self.xmlhttp.responseText;
 | 
						|
							self.responseXML = self.xmlhttp.responseXML;
 | 
						|
							self.responseStatus[0] = self.xmlhttp.status;
 | 
						|
							self.responseStatus[1] = self.xmlhttp.statusText;
 | 
						|
 | 
						|
							if (self.execute) {
 | 
						|
								self.runResponse();
 | 
						|
							}
 | 
						|
 | 
						|
							if (self.elementObj) {
 | 
						|
								elemNodeName = self.elementObj.nodeName;
 | 
						|
								elemNodeName.toLowerCase();
 | 
						|
								if (elemNodeName == "input"
 | 
						|
								|| elemNodeName == "select"
 | 
						|
								|| elemNodeName == "option"
 | 
						|
								|| elemNodeName == "textarea") {
 | 
						|
									self.elementObj.value = self.response;
 | 
						|
								} else {
 | 
						|
									self.elementObj.innerHTML = self.response;
 | 
						|
								}
 | 
						|
							}
 | 
						|
							if (self.responseStatus[0] == "200") {
 | 
						|
								self.onCompletion();
 | 
						|
							} else {
 | 
						|
								self.onError();
 | 
						|
							}
 | 
						|
 | 
						|
							self.URLString = "";
 | 
						|
							break;
 | 
						|
					}
 | 
						|
				};
 | 
						|
 | 
						|
				this.xmlhttp.send(this.URLString);
 | 
						|
			}
 | 
						|
		}
 | 
						|
	};
 | 
						|
 | 
						|
	this.reset();
 | 
						|
	this.createAJAX();
 | 
						|
}
 |