﻿
jQuery.fn.extend({

    // Matt - puts the parameters of the given url into an associative array
    getUrlParameters: function(strUrl) {

        if (!strUrl) {
            strUrl = new String(window.location);
        }

        // remove the # and everything after it
        strUrl = this.removeUrlFragment(strUrl);

        if (strUrl.indexOf('?') < 0)
            return this.getQueryStringParameters('');

        var query = strUrl.substring(strUrl.indexOf('?'));
        query = query.replace('?', '');

        return this.getQueryStringParameters(query);
    },


    removeUrlQueryString: function(strUrl) {

        if (!strUrl) {
            strUrl = new String(window.location);
        }

        if (strUrl.indexOf('?') > 0) {
            strUrl = strUrl.substring(0, strUrl.indexOf('?'));
        }

        return strUrl.valueOf();
    },


    getQueryStringParameters: function(queryString) {
        if (typeof (queryString) != 'string')
            queryString = new String(queryString);

        var strParameters = queryString.split('&');
        var parameters = new Object();

        for (var p in strParameters) {
            if (p == '')
                continue;

            var parameter = strParameters[p].split('=');
            parameters[parameter[0]] = parameter[1];
        }

        return parameters;
    },


    // turns the parameters object into a query string like { a: 'x', b: 'y', c: 'z' } -> a=x&b=y&c=z
    createQueryStringParameters: function(parameters) {
        var queryString = new String();
        for (var p in parameters) {
            if (p == '')
                continue;

            queryString += "&" + p + "=" + parameters[p];
        }
        if (queryString.length > 0) {
            queryString = queryString.substring(1);
        }
        return queryString.valueOf();
    },


    removeUrlFragment: function(strUrl) {
        if (!strUrl) {
            strUrl = new String(window.location);
        }

        if (strUrl.indexOf('#') > 0) {
            strUrl = strUrl.substring(0, strUrl.indexOf('#'));
        }

        return strUrl.valueOf();
    },


    getUrlFragment: function(strUrl) {
        if (!strUrl) {
            strUrl = new String(window.location);
        }

        var fragment = '';

        if (strUrl.indexOf('#') > 0) {
            fragment = strUrl.substring(strUrl.indexOf('#') + 1);
        }

        return fragment.valueOf();
    },


    createUrlFragment: function(fragment, strUrl) {
        if (!strUrl) {
            strUrl = new String(window.location);
        }

        // remove the # and everything after it
        strUrl = this.removeUrlFragment(strUrl);

        strUrl = '#' + fragment;

        return strUrl.valueOf();
    }
});