Initial dev repository
[kcls-web.git] / opac / common / js / CGI.js
diff --git a/opac/common/js/CGI.js b/opac/common/js/CGI.js
new file mode 100644 (file)
index 0000000..28e9e6d
--- /dev/null
@@ -0,0 +1,76 @@
+function CGI() {
+       /* load up the url parameters */
+
+       this._keys = new Array();
+       this.data = new Object();
+
+       var string = location.search.replace(/^\?/,"");
+       this.server_name = location.href.replace(/^https?:\/\/([^\/]+).+$/,"$1");
+
+       var key = ""; 
+       var value = "";
+       var inkey = true;
+       var invalue = false;
+
+       for( var idx = 0; idx!= string.length; idx++ ) {
+
+               var c = string.charAt(idx);
+
+               if( c == "=" )  {
+                       invalue = true;
+                       inkey = false;
+                       continue;
+               } 
+
+               if(c == "&" || c == ";") {
+                       inkey = 1;
+                       invalue = 0;
+                       if( ! this.data[key] ) this.data[key] = [];
+                       this.data[key].push(decodeURIComponent(value));
+                       this._keys.push(key);
+                       key = ""; value = "";
+                       continue;
+               }
+
+               if(inkey) key += c;
+               else if(invalue) value += c;
+       }
+
+       if( ! this.data[key] ) this.data[key] = [];
+       this.data[key].push(decodeURIComponent(value));
+       this._keys.push(key);
+}
+
+/* returns the value for the given param.  If there is only one value for the
+   given param, it returns that value.  Otherwise it returns an array of values
+ */
+CGI.prototype.param = function(p) {
+       if(this.data[p] == null) return null;
+       if(this.data[p].length == 1)
+               return this.data[p][0];
+       return this.data[p];
+}
+
+/* returns an array of param names */
+CGI.prototype.keys = function() {
+       return this._keys;
+}
+
+/* debuggin method */
+CGI.prototype.toString = function() {
+       var string = "";
+       var keys = this.keys();
+
+       for( var k in keys ) {
+               string += keys[k] + " : ";
+               var params = this.param(keys[k]);
+
+               for( var p in params ) {
+                       string +=  params[p] + " ";
+               }
+               string += "\n";
+       }
+       return string;
+}
+
+