﻿var defaultMessage = "";

var setupSubmitQuestionInteractivity = function($modal)
{
    var _$defaultView = $modal.find('div.view.default');

    // Focus first element
    _$defaultView.focusFirstElement();
    // Setup circular tab order
    _$defaultView.find('div[id$=ModalClearButton]').tabButtonOverride(_$defaultView);

    // Apply sIFR replacements
    sIFR.replacePurpleH2();
    sIFR.replaceLeadinDiv();
};

var clearSubmitQuestionForm = function($modal)
{
    $modal.find('input[type=text]').val('');
    $modal.find('textarea').val(defaultMessage);
    $modal.find('div.errorText').hide();
}

function setupModal(modalCSS)
{
    var _$modal = $('div[id$=pnlModalWrapper].' + modalCSS);

    defaultMessage = _$modal.find('textarea[id$=YourMessageTextBox]').val();

    // Setup modal
    var MyModal = new FreeClear.UI.Modal({
        'elementSelector': 'div[id$=pnlModalWrapper].' + modalCSS,
        'allowResize': true,
        'onOpen': function()
        {
            setupSubmitQuestionInteractivity(_$modal);
        },
        'onClose': function()
        {
            MyModal.setActiveView(_$modal, 'default');
            clearSubmitQuestionForm(_$modal);
        }
    });

    // Setup refer a friend update panel request manager callbacks
    PLY.Utilities.UpdatePanelRequestManager.getInstance().setupAsyncEvents({
        'asyncTriggerElementCssSelectors': ['#' + _$modal.find('div[id$=ModalSubmitButton]').attr('id')],
        'onEndRequest': function()
        {
            var _$activeFormView = _$modal.find('input[id$="ActiveFormView"]');
            if (_$activeFormView.length == 1)
            {
                MyModal.setActiveView(_$modal, _$activeFormView.val());
            }
            setupSubmitQuestionInteractivity(_$modal)
        },
        'onError': function()
        {
            MyModal.setActiveView(_$modal, 'error');

            // Setup return to form link
            _$modal.find('div.view.error a.return').click(function()
            {
                MyModal.setActiveView(_$modal, 'default');
            });
        }
    });

    // Set loading animation
    _$modal.find('div[id$=ModalSubmitButton]').live('click', function()
    {
        MyModal.setLoadingViewHeight($('div.' + modalCSS));
    });

    // Reset form
    _$modal.find('div[id$=ModalClearButton]').live('click', function()
    {
        clearSubmitQuestionForm(_$modal);
    });

    // Set edit (back to default) action
    _$modal.find('div[id$=ModalBackToEditButton]').live('click', function()
    {
        MyModal.setActiveView(_$modal, 'default');
    });

    return MyModal;
}
