test
authorJuti Noppornpitak <jnopporn@csclub.uwaterloo.ca>
Sun, 18 Mar 2007 18:06:26 +0000 (18:06 +0000)
committerJuti Noppornpitak <jnopporn@csclub.uwaterloo.ca>
Sun, 18 Mar 2007 18:06:26 +0000 (18:06 +0000)
ajax.js [new file with mode: 0644]

diff --git a/ajax.js b/ajax.js
new file mode 100644 (file)
index 0000000..c89e1ff
--- /dev/null
+++ b/ajax.js
@@ -0,0 +1,166 @@
+// X-Mode AJAX Core "Yume" 2.0
+// Compatible with X-Mode 3 "Yotsuba" and any other external apps.
+// Originally developed by Dave Crane, Eric Pascarello and Darren James
+// Developed by Juti Noppornpitak
+
+var net = new Object();
+net.READY_STATE_UNINITIALIZED = 0;
+net.READY_STATE_LOADING = 1;
+net.READY_STATE_LOADED = 2;
+net.READY_STATE_INTERACTIVE = 3;
+net.READY_STATE_COMPLETE = 4;
+net.CONNECTION_TERMINATION = "<blink>Terminating the connection...</blink>";
+net.core = function(url, console, onload, loading, onerror,
+       method, data, contentType) {
+       this.url = url;
+       this.currurl = url;
+       this.req = null;
+       this.console = console;
+       this.data = (data) ? data : null;
+       this.contentType = (contentType) ? contentType : null;
+       this.method = (method) ? method : "GET";
+       this.onload = (onload) ? onload : this.defaultLoad;
+       this.loading = (loading) ? loading : this.defaultLoading;
+       this.onerror = (onerror) ? onerror : this.defaultError;
+       // Require the user to manually start the connection.
+       // this.connect(url);
+}
+net.core.prototype = {
+       defaultConnect:function() {
+               this.connect(this.url);
+       },
+
+       connect:function(url, method, data, contentType) {
+               // Create the requester
+               if(window.XMLHttpRequest) { // for Mozilla/Safari
+                       this.req = new XMLHttpRequest();
+               } else if(window.ActiveXObject) { // for MSIE
+                       this.req = new ActiveXObject("Microsoft.XMLHTTP");
+               }
+               
+               if(!contentType && method == "POST") {
+                       contentType="application/x-www-form-urlencoded";
+               }
+
+               this.currurl = url;
+               
+               if(this.req) {
+                       try {
+                               var loader = this;
+                               this.req.onreadystatechange = function() {
+                                       loader.process.call(loader);
+                               }
+                               if(!method) { method = "GET"; }
+                               if(!data) { data = null; }
+                               this.req.open(method, this.currurl, true);
+                               if(contentType) {
+                                       this.req.setRequestHeader("Content-Type", contentType);
+                               }
+                               this.req.send(data);
+                       } catch(err) {
+                               this.onerror.call(this);
+                       }
+               }
+       },
+       
+       process:function() {
+               var req = this.req;
+               var status = req.readyState;
+
+               if(status == net.READY_STATE_COMPLETE) {
+                       var httpstatus = req.status;
+                       if(httpstatus == 200 || httpstatus == 0) {
+                               this.onload.call(this);
+                       } else {
+                               this.onerror.call(this);
+                       }
+               } else {
+                       // handling loading/connecting
+                       this.loading.call(this);
+               }
+       },
+
+       defaultLoad:function() {
+               xcie__setElement(this.console, 
+                       this.req.responseText);
+       },
+       
+       defaultError:function() {
+               alert("Error while connecting to: " + this.currurl);
+       },
+
+       defaultLoading:function() {
+               xcie__setElement(this.console, "Loading");
+       }
+}
+
+function xcie__element(id) {
+       return document.getElementById(id);
+}
+
+function xcie__getElement(id) {
+       if(!xcie__element(id)) return;
+       return xcie__element(id).innerHTML;
+}
+
+function xcie__getElementValue(id) {
+       if(!xcie__element(id)) return;
+       return xcie__element(id).value;
+}
+
+function xcie__setElementValue(id, value) {
+       if(!xcie__element(id)) return;
+       xcie__element(id).value = value;
+}
+
+function xcie__setElement(id, value) {
+       if(!xcie__element(id)) return;
+       xcie__element(id).innerHTML = value;
+}
+
+function xcie__setWindowTitle(value) {
+       document.title = value;
+}
+
+function xcie__setClass(id, nc) {
+       xcie__element(id).className = nc;
+}
+
+function xcie__img(src, align, other) {
+       return "<img border=\"0\" src=\"" + src + "\" align=\""
+               + ((align)?align:"absmiddle")
+               + "\" " + ((other)?other:"") + "/>";
+}
+
+function xcie__a(label, value, ajax, other, command) {
+       return "<a " + (!ajax?"href=\"" + value + "\"":"onclick=\""
+               + ((command == null)?
+                       "connect('" + net.PREFIX_LINK + value + "');"
+                       :command)
+               + "\"")
+               + ((other)?" " + other:"") + "\">"
+               + label + "</a>";
+}
+
+function xcie__in(type, name, value, other, cmd) {
+       return "<input name=\"" + name + "\" id=\"" + name + "\""
+               + " type=\"" + type + "\" value=\"" + ((value)?value:"")
+               + "\"" + " onclick=\"" + cmd + "\""
+               + ((other)?" " + other:"") + "/>";
+}
+
+function addslashes(str) {
+       // SRC: Stephen Chapman of About.com
+       str=str.replace(/\\/g,'\\\\');
+       str=str.replace(/\'/g,'\\\'');
+       str=str.replace(/\"/g,'\\"');
+       return str;
+}
+
+function stripslashes(str) {
+       // SRC: Stephen Chapman of About.com
+       str=str.replace(/\\'/g,'\'');
+       str=str.replace(/\\"/g,'"');
+       str=str.replace(/\\\\/g,'\\');
+       return str;
+}