(function($) {
    var defaults = {};

    $.fn.applet = function(first_url, second_url, options) {
        var setOptions = function(el) {
            options = $.extend({}, defaults, el.data('availability_request:options'), options);
            el.data('availability_request:options', options);
        }

        var getTEST = function(postData) {
            $.post(second_url, postData, function(data) {
                $('#breadCrumb-content').html(' &gt; Tee Time On-Line');
                $('#right').html(data.html);
                $('.colorbox').colorbox({iframe:true, width:900, height:550, close:'Close'});
                $('#right').fadeTo("slow", 1);
                $('#loading-background').fadeOut("slow");
            }, "json");
        };

        var getJSON = function(el, postData) {
            $.post(first_url, postData, function(data) {
                el.html(data.html);
                el.find("#availability-request-form").submit(function() {
                    var postData = {};
                    var formData = $(this).find(":input").serializeArray();
                    var command = $(this).find(":input[name$='command]']").val();
                    $.each(formData, function (i, field) {
                        postData[field.name] = field.value;
                    });
                    if (command.substr(0, 32) == 'TzoyNjoiU2tldGNoRm9ybUNvbW1hbmRQ') {
                        $('#right').fadeTo("slow", 0.33);
                        $('#loading-background').center();
                        $('#loading-background').fadeIn("slow");
                        getTEST(postData);
                        $(this).find(":input[name$='command]']").val(null);
                        return false;
                    } else {
                        $('#availability-request-form :input').attr('disabled', 'disabled');
                        getJSON(el, postData);
                        return false;
                    }
                });
            }, "json");
        };

        this.each(function(el) {
            el = $(this);
            setOptions(el);
            getJSON(el, {});
        });

        return this;
    }
})(jQuery);