﻿class HTMLPairsConvertor
{
    static ConvertObjToPairs(obj: Object, skipList?: string[]): string
    {
        var pairs: string[] = [];

        // Name value pairs as sent from HTML form during GET or POST
        for (var propName in obj)
        {
            if (skipList === undefined || !($.inArray(propName, skipList) > -1))
            {
                pairs.push(this.NameValuePair(propName, obj[propName]));
            }
        }
        return pairs.join('&');
    }

    static NameValuePair(name: string, value: any): string
    {
        return encodeURIComponent(name) + "=" + encodeURIComponent(value);
    }

    static ConvertPairsToObj(pairData: string): Object
    {
        var pairs: string[] = pairData.split('&');
        var obj: Object = {};

        for (var p of pairs)
        {
            var pair: string[] = p.split('=');
            obj[pair[0].trim()] = pair[1].trim();
        }
        return obj;
    }
} 