CGI -- Query String parser
function CGI(query_string) {
this.parameters = {};
this.query_string = (query_string
|| window.location.search).replace(/^\?/, '');
this.keyValuePairs = [];
if (this.query_string) {
this.keyValuePairs = this.query_string.split(/&/);
for(var j=0; j < this.keyValuePairs.length; j++) {
var keyvalue = this.keyValuePairs[j].split("=");
if (keyvalue.length > 1) {
var name = decodeURIComponent( keyvalue[0] );
var value = decodeURIComponent( keyvalue[1].replace(/\+/g,' ') );
if( typeof this.parameters[ name ] == 'undefined' )
this.parameters[ name ] = value;
else if ( this.parameters[ name ] instanceof Array )
this.parameters[ name ].push( value );
else
this.parameters[ name ] = [ this.parameters[ name ], value ];
}
}
}
}
CGI.prototype.param = function() {
if (arguments.length == 0){
var rv = [];
for( var name in this.parameters )
if ( this.parameters.hasOwnProperty(name) )
rv.push(name);
return rv;
}
if (arguments.length > 1) {
this.parameters[ arguments[0] ] = arguments[1];
}
return this.parameters[arguments[0]]
};
2008-03-25 - Woosta
2008-03-25 - Woosta -- removed attempt to make the constructor work as a method if that's what the user wants. JS doesn't support that?!