jQuery.fn.extend({
    formJSON: function(includeEmptyFields)
    {
        if (includeEmptyFields == undefined)
            includeEmptyFields = 0;

        var fJSON = {};
        var fields = this.serializeArray();
        for (var i = 0; i < fields.length; i++)
        {
            var val = fields[i].value;
            if (includeEmptyFields == 0 && (val == undefined || val == ""))
                continue;

            var key = fields[i].name;
            if (fJSON.hasOwnProperty(key))
            {
                if (typeof(fJSON[key]) == 'string')
                    fJSON[key] = [fJSON[key], val];
                else
                    fJSON[key].push(val);
            }
            else
                fJSON[key] = val;
        }

        return fJSON;
    },
    vshow: function()
    {
        for (var i = 0, l = this.length; i < l; i++)
        {
            if (jQuery.css(this[i], 'visibility') === 'hidden')
            {
                this[i].style.visibility = 'visible';
            }
        }

        return this;
    },

    vhide: function()
    {
        for (var i = 0, l = this.length; i < l; i++)
        {
            if (jQuery.css(this[i], 'visibility') === 'visible')
            {
                this[i].style.visibility = 'hidden';
            }
        }

        return this;
    }
});
