function RObj(ea) {
    var LS = "";
    var QS = new Object();
    var un = "undefined";
    var x = null;
    var f = "function";
    var n = "number";
    var r = "string";
    var e1 = "ERROR:Index out of range in\r\nRequest.QueryString";
    var e2 = "ERROR:Wrong number of arguments or invalid property assignment\r\nRequest.QueryString";
    var e3 = "ERROR:Object doesn't support this property or method\r\nRequest.QueryString.Key";
    var dU = window.decodeURIComponent ? 1 : 0;
    function Err(arg) {
        if (ea) {
            alert("Request Object:\r\n" + arg)
        }
    };
    function URID(t) {
        var d = "";
        if (t) {
            for (var i = 0; i < t.length; ++i) {
                var c = t.charAt(i);
                d += (c == "+" ? " " : c)
            }
        }
        return (dU ? decodeURIComponent(d) : unescape(d))
    };
    function OL(o) {
        var l = 0;
        for (var i in o) {
            if (typeof o[i] != f) {
                l++
            }
        };
        return l
    };
    function AK(key) {
        var auk = true;
        for (var u in QS) {
            if (typeof QS[u] != f && u.toString().toLowerCase() == key.toLowerCase()) {
                auk = false;
                return u
            }
        }
        if (auk) {
            QS[key] = new Object();
            QS[key].toString = function() {
                return TS(QS[key])
            };
            QS[key].Count = function() {
                return OL(QS[key])
            };
            QS[key].Count.toString = function() {
                return OL(QS[key]).toString()
            };
            QS[key].Item = function(e) {
                if (typeof e == un) {
                    return QS[key]
                }
                else {
                    if (typeof e == n) {
                        var a = QS[key][Math.ceil(e)];
                        if (typeof a == un) {
                            Err(e1 + "(\"" + key + "\").Item(" + e + ")")
                        };
                        return a
                    }
                    else {
                        Err("ERROR:Expecting numeric input in\r\nRequest.QueryString(\"" + key + "\").Item(\"" + e + "\")")
                    }
                }
            };
            QS[key].Item.toString = function(e) {
                if (typeof e == un) {
                    return QS[key].toString()
                }
                else {
                    var a = QS[key][e];
                    if (typeof a == un) {
                        Err(e1 + "(\"" + key + "\").Item(" + e + ")")
                    };
                    return a.toString()
                }
            };
            QS[key].Key = function(e) {
                var t = typeof e;
                if (t == r) {
                    var a = QS[key][e];
                    return (typeof a != un && a && a.toString() ? e : "")
                } else { Err(e3 + "(" + (e ? e : "") + ")") } 
            }; QS[key].Key.toString = function() { return x } 
        }; return key
    }; 
    function AVTK(key, val) {
        if (key != "") {
            var key = AK(key);
            var l = OL(QS[key]);
            QS[key][l + 1] = val
        }
    };
    function TS(o) {
        var s = "";
        for (var i in o) {
            var ty = typeof o[i];
            if (ty == "object") {
                s += TS(o[i])
            }
            else if (ty != f) {
            s += o[i] + ", "
        }
    };
    var l = s.length;
    if (l > 1) {
        return (s.substring(0, l - 2))
    }
    return (s == "" ? x : s)
};
function KM(k, o) {
    var k = k.toLowerCase();
    for (var u in o) {
        if (typeof o[u] != f && u.toString().toLowerCase() == k) {
            return u
        }
    }
}
if (window.location && window.location.search) {
    LS = window.location.search;
    var l = LS.length;
    if (l > 0) {
        LS = LS.substring(1, l);
        var preAmpAt = 0;
        var ampAt = -1;
        var eqAt = -1;
        var k = 0;
        var skip = false;
        for (var i = 0; i < l; ++i) {
            var c = LS.charAt(i);
            if (LS.charAt(preAmpAt) == "=" || (preAmpAt == 0 && i == 0 && c == "=")) {
                skip = true
            }
            if (c == "=" && eqAt == -1 && !skip) {
                eqAt = i
            }
            if (c == "&" && ampAt == -1) {
                if (eqAt != -1) {
                    ampAt = i
                }
                if (skip) {
                    preAmpAt = i + 1
                };
                skip = false
            }
            if (ampAt > eqAt) {
                AVTK(URID(LS.substring(preAmpAt, eqAt)), URID(LS.substring(eqAt + 1, ampAt)));
                preAmpAt = ampAt + 1; eqAt = ampAt = -1; ++k
            }
        }
        if (LS.charAt(preAmpAt) != "=" && (preAmpAt != 0 || i != 0 || c != "=")) {
            if (preAmpAt != l) {
                if (eqAt != -1) {
                    AVTK(URID(LS.substring(preAmpAt, eqAt)), URID(LS.substring(eqAt + 1, l)))
                }
                else if (preAmpAt != l - 1) {
                AVTK(URID(LS.substring(preAmpAt, l)), "")
            }
        }
        if (l == 1) {
            AVTK(LS.substring(0, 1), "")
        }
    }
}
};
var TC = OL(QS);
if (!TC) {
    TC = 0
};
QS.toString = function() {
return LS.toString()
};
QS.Count = function() {
return (TC ? TC : 0)
};
QS.Count.toString = function() {
return (TC ? TC.toString() : "0")
};
QS.Item = function(e) {
if (typeof e == un) {
    return LS
}
else {
    if (typeof e == n) {
        var e = Math.ceil(e);
        var c = 0;
        for (var i in QS) {
            if (typeof QS[i] != f && ++c == e) {
                return QS[i]
            }
        };
        Err(e1 + "().Item(" + e + ")")
    }
    else {
        return QS[KM(e, QS)]
    }
};
return x
};
QS.Item.toString = function() {
return LS.toString()
};
QS.Key = function(e) {
var t = typeof e;
if (t == n) {
    var e = Math.ceil(e);
    var c = 0;
    for (var i in QS) {
        if (typeof QS[i] != f && ++c == e) {
            return i
        }
    }
} else if (t == r) {
var e = KM(e, QS);
var a = QS[e];
return (typeof a != un && a && a.toString() ? e : "")
} else {
Err(e2 + "().Key(" + (e ? e : "") + ")")
};
Err(e1 + "().Item(" + e + ")")
};
QS.Key.toString = function() {
Err(e2 + "().Key")
};
this.QueryString = function(k) {
    if (typeof k == un) {
        return QS
    } else {
        if (typeof k == n) {
            return QS.Item(k)
        };
        var k = KM(k, QS);
        if (typeof QS[k] == un) {
            t = new Object();
            t.Count = function() {
                return 0
            };
            t.Count.toString = function() {
                return "0"
            };
            t.toString = function() {
                return x
            };
            t.Item = function(e) {
                return x
            };
            t.Item.toString = function() {
                return x
            };
            t.Key = function(e) {
                Err(e3 + "(" + (e ? e : "") + ")")
            };
            t.Key.toString = function() {
                return x
            };
            return t
        } else {
            return QS[k]
        }
    }
};
this.QueryString.toString = function() {
    return LS.toString()
};
this.QueryString.Count = function() {
    return (TC ? TC : 0)
};
this.QueryString.Count.toString = function() {
return (TC ? TC.toString() : "0")
};
this.QueryString.Item = function(e) {
    if (typeof e == un) {
        return LS.toString()
    } else {
        if (typeof e == n) {
            var e = Math.ceil(e);
            var c = 0;
            for (var i in QS) {
                if (typeof QS[i] != f && ++c == e) {
                    return QS[i]
                }
            };
            Err(e1 + ".Item(" + e + ")")
        } else { return QS[KM(e, QS)] }
    } if (typeof e == n) {
        Err(e1 + ".Item(" + e + ")")
    }; return x
};
this.QueryString.Item.toString = function() {
return LS.toString()
};
this.QueryString.Key = function(e) {
    var t = typeof e;
    if (t == n) {
        var e = Math.ceil(e);
        var c = 0;
        for (var i in QS) {
            if (typeof QS[i] == "object" && (++c == e)) {
                return i
            }
        }
    } else if (t == r) {
        var e = KM(e, QS);
        var a = QS[e];
        return (typeof a != un && a && a.toString() ? e : "")
    } else {
        Err(e2 + ".Key(" + (e ? e : "") + ")")
    };
    Err(e1 + ".Item(" + e + ")")
};
this.QueryString.Key.toString = function() {
    Err(e2 + ".Key")
};
this.Version = 1.4;
this.Author = "Andrew Urquhart (http://andrewu.co.uk)"
};
var Request = new RObj(false);

