﻿function QueryString(qs) {
    if (!qs) qs = location.search.substring(1, location.search.length);

    this.params = {};

    if (qs) {
        qs = qs.replace(/\+/g, ' ');
        var args = qs.split('&');

        for (var i = 0; i < args.length; i++) {
            var pair = args[i].split('=');
            var name = decodeURIComponent(pair[0]);

            var value = (pair.length === 2 ? decodeURIComponent(pair[1]) : name);

            if (this.params[name]) {
                this.params[name].push(value);
            } else {
                this.params[name] = [value];
            }
        }
    }
}

QueryString.prototype.get = function(key, default_) {
    var value = this.params[key];
    return (value !== null) ? value : default_;
};

QueryString.prototype.set = function(key, value) {
    if (value instanceof Array) {
        this.params[key] = value;
    } else {
        this.params[key] = [value];
    }
};

QueryString.prototype.contains = function(key) {
    var value = this.params[key];
    return (value !== null);
};

QueryString.prototype.toString = function() {
    var _values = '';
    for (var i in this.params) {
        var values = this.params[i];
        if (values) {
            for (var z in values) {

                if (values[z] === undefined || values[z] === null || values[z] === '') continue;
                
                if (_values.length > 0)
                    _values = _values + "&";
                _values = _values + i + "=" + encodeURIComponent(values[z]);
            }
        }
    }
    return _values;
};

