Parse query strings from a url as associative array

JavaScript

var getUrlParameters = function(url) {
    var queryParams = {};
    var query = url.substr(url.indexOf('?')+1);
    var hash = query.indexOf('#');
    if (hash != -1) {
        queryParams['#'] = query.substr(hash+1);
        query = query.substr(0, hash);
    }
    var keyValues = query.split('&');
    for (var i = 0 ; i < keyValues.length; i++) {
        var delimiter = keyValues[i].indexOf('=');
        if (delimiter == -1) {
            delimiter = keyValues[i].length;
        }
        var key = keyValues[i].substr(0, delimiter);
        var value = keyValues[i].substr(delimiter+1);
        queryParams[key] = value;
    }
    return queryParams;
};

var url = "http://google.com/?p=100&q=apple#test";

var params = getUrlParameters(url);
document.write('url = '+url+'<br/>');
document.write('p = '+params['p']+'<br/>');
document.write('q = '+params['q']+'<br/>');
document.write('hash = ' +params['#'] + '<br/>');