CARE2.util.internalOptinFormManager = function(formID, submitButtonID) {
    this._formID = formID;
    this._submitButtonID = submitButtonID;

    this._buildOverlay();

    CARE2.addListener(this._submitButtonID, 'click',
                                 this.submit, this, true, true);
};

CARE2.util.internalOptinFormManager.prototype = {
    submit: function() {
        var form = document.getElementById(this._formID);

        if (form) {
            var args = Care2.ajax.extractFormValues(form);

            if (args.email == 'name@address.com') {
                args.email = '';
            }

            Care2.ajax.simpleRequest('/newsletters/', args, this._requestCallback, this,
                                     { expectJsonResponse: true });
        }

        form = null;
    },

    _requestCallback: function(data, helper) {
        if (YAHOO.lang.isString(data.error) && (data.error != '')) {
            this._showError(data.error);
        } else {
            var sa = [];

            if(typeof data.new_subs == "undefined" || typeof data.new_subs.length == "undefined" || data.new_subs.length == 0) {
                sa[sa.length] = 'Thank you, you are now subscribed!';
            } else {
                sa[sa.length] = 'You are now subscribed to:';
                sa[sa.length] = '<ul style="margin-left: 20px; margin-top: 5px;">';
                for (var i = 0; i < data.new_subs.length; i++) {
                    sa[sa.length] = '<li style="display: list-item; list-style-type: disc;">';
                    sa[sa.length] =      data.new_subs[i] + '</li>';
                }
                sa[sa.length] = '</ul>';
            }

            this._showConfirm(sa.join(''));
        }
    },

    _buildOverlay: function() {
        var sa = [];
        sa.push('<div id="iofm-overlay-body" style="padding: 10px;width:250px;"></div>');
        sa.push('<div id="iofm-overlay-buttons" style="padding-bottom: 10px; text-align: center;">');
        sa.push('<button id="iofm-overlay-button-ok" class="care2_button_light_small" style="margin:0 auto;">OK</button>');
        sa.push('</div>');

        this._overlay = CARE2.floater(sa.join(''), {dontShow:true, branding:'care2'});

        YAHOO.util.Event.addListener('iofm-overlay-button-ok', 'click',
                                     this._overlay.hide, this._overlay, true);


        /*overlaySpec = {
            fixedcenter: true,
            close: false,
            draggable: false,
            modal: true,
            zindex: 400,
            visible: false,
            width: "300px"
        };

        this._overlay = new YAHOO.widget.Panel("iofm-overlay", overlaySpec);

        var sa = [];
        sa[sa.length] = '<div id="iofm-overlay-body" style="padding: 10px;"></div>';
        sa[sa.length] = '<div id="iofm-overlay-buttons" ';
        sa[sa.length] =      'style="text-align: center; padding-bottom: 10px;;">';
        sa[sa.length] =       '<button id="iofm-overlay-button-ok">OK</button>';
        sa[sa.length] = '</div>';
        this._overlay.setBody(sa.join(''));

        this._overlay.render(document.body);

        YAHOO.util.Event.addListener('iofm-overlay-button-ok', 'click',
                                     this._overlay.hide, this._overlay, true);*/
    },

    _showConfirm: function(message) {
        this._showOverlay(message);
    },

    _showError: function(error) {
        var sa = [];
        sa[sa.length] = '<div style="font-size: larger; font-weight: bold; color: #d00; padding-bottom: 5px;">';
        sa[sa.length] =     'Oops! We encountered a problem:';
        sa[sa.length] = '</div>';
        sa[sa.length] = '<div style="">';
        sa[sa.length] =     error;
        sa[sa.length] = '</div>';

        this._showOverlay(sa.join(''));
    },

    _showOverlay: function(content) {
        var overlayBody = document.getElementById('iofm-overlay-body');

        if (overlayBody) {
            overlayBody.innerHTML = content;
            this._overlay.show();
        }

        overlayBody = null;
    },

    _hideOverlay: function() {
        this._overlay.hide();
    }
};
