URL.txt

URL = {
    're':    new RegExp(
                 '(?:([^:/?#]+):)?' // protocol
                +'(?://([^/?#]*))?' // host
                +'([^?#]*)'         // pathname
                +'(?:\\?([^#]*))?'  // search
                +'(?:#(.*))?'       // hash
             ),
    'split': function(url) {
                 return URL.re.exec(url);
             },
    'obj':   function(url) {
                 var a = URL.re.exec(url);
                 var q = {};

                 for(i = 0; i < 5; i++) {
                    if(!a[i]) a[i] = "";
                 }

                 $.map(a[4].split("&"), function(i) {
                    var kv   = i.split("=");
                    q[kv[0]] = kv[1];
                 });

                 return {
                    'href':     a[0] || '',
                    'protocol': a[1] || '',
                    'host':     a[2] || '',
                    'pathname': a[3] || '',
                    'search':   q[4] || '',
                    'hash':     a[5] || '',
                    'query':    q
                 };
             }
};