﻿var Modal =
{
    JQueryInstanceToClickOnConfirm: null,
    ShowConfirmWindow: function (modalConfirmQuestionMessage, modalConfirmQuestionTitle, jQueryInstanceToClickOnConfirm) {

        Modal.JQueryInstanceToClickOnConfirm = jQueryInstanceToClickOnConfirm;


        $('.lQuestionTitle').attr('innerHTML', modalConfirmQuestionTitle);
        $('.questionMessageDiv').attr('innerHTML', modalConfirmQuestionMessage);
        //        $('.tblModalConfirm').draggable({
        //            handle: $('.tcEditorTitle')
        //        });

        //$('.tblModalConfirm').css('height', window.parent.document.body.clientHeight + 'px');
        //$('.tblModalConfirm').css('margin-top', window.parent.document.body.scrollTop + 'px');
        $('.tblBackgroundQuestion').show();
    },
    CloseConfirmWindow: function () {
        $('.tblBackgroundQuestion').hide();
        HideGlobalProgress();
    },
    OnConfirmWindowApproved: function () {
        Modal.CloseConfirmWindow();

        if (Modal.JQueryInstanceToClickOnConfirm.attr('onClickEvent') == null ||
            Modal.JQueryInstanceToClickOnConfirm.attr('onClickEvent') == '') {

            var originalOnClick = Modal.JQueryInstanceToClickOnConfirm.attr('onclick').toString();

            if (originalOnClick == '') {
                Modal.JQueryInstanceToClickOnConfirm.click();
            }
            else {
                var originalOnClickBody = originalOnClick.substring(originalOnClick.indexOf('{') + 1, originalOnClick.lastIndexOf('}'));

                //compatibility with firefox
                originalOnClickBody = originalOnClickBody.replace(/\n/g, '').replace(/,\s*/g, ',').replace(/;\s*/g, ';');

                var startIndex = originalOnClickBody.indexOf('Modal.ShowConfirmWindow');
                var temp = originalOnClickBody.substring(startIndex);
                var endIndex = temp.indexOf(',$(this));return false;');
                var resultOnClick = originalOnClickBody.substring(0, startIndex) + temp.substring(endIndex + ',$(this));return false;'.length);

                Modal.JQueryInstanceToClickOnConfirm.attr('onclick', '');
                Modal.JQueryInstanceToClickOnConfirm.bind('click', null, function (e) {
                    Modal.EvalWithReturnValue(resultOnClick);
                });

                Modal.JQueryInstanceToClickOnConfirm.click();
            }
        }
        else {
            Modal.EvalWithReturnValue(Modal.JQueryInstanceToClickOnConfirm.attr('onClickEvent'));
        }

        ShowGlobalProgress();
    },
    EvalWithReturnValue: function (scriptToEval) {
        returnValue = undefined;
        scriptToEval = 'try{' + scriptToEval.replace("return false", "throw('ReturnFalseCodeBreak')") + '}catch(e){if(e != "ReturnFalseCodeBreak") throw(e);}';
        eval(scriptToEval);
        return returnValue;
    }
}
