﻿$(document).ready(dialogForms)
            .ajaxStart(function () {
                $('#ajaxLoadingPanel').show();
            })
            .ajaxComplete(function () {
                $('#ajaxLoadingPanel').hide();
                dialogForms();
            });
    
function dialogForms() {
    $('a.dialog-form').unbind('click').click(OpenPopup);
}

function OpenPopup(event)
{
    event.stopPropagation();

    var a = $(this);

    var width = a.attr('dialogWidth');
    
    //added to disable auto focus on first input on dialog open 
    var autoFocus = a.attr('losefocus') ? a.attr('losefocus') : "";

    if (!width) {
        width = 'auto';
    }

    $.get(a.attr('href'), function (resp) {
        if (resp.indexOf('LOGON-PAGE') != -1) {
            location.href = '/admin/account/logon?returnurl=' + location.href;
        }

        var callbackfunction = a.attr('callback');

        var dialog = $('<div>').attr('id', 'formDialog').addClass("admin-body").html(resp);
        $('body').append(dialog);

        if (!a.attr('nobuttons')) {
            var button_name;
            var dialog_buttons = {};

            if (dialog.find(':submit')) {

                dialog.find(':submit').hide();

                button_name = dialog.find(':submit').attr('value');
                var actionCK = dialog.find(':submit').attr('transfer');
                var validation = null;

                if (a.attr('validation')) {
                    validation = a.attr('validation');
                }
                dialog_buttons[button_name] = function () {
                    submitFormWithAjax($(this).find('form'), actionCK, validation, callbackfunction, $(this));

                }
            }

            dialog_buttons['Cancel'] = function () { $(this).remove(); OnCloseDialog(); }
        }

        if (a.attr('multipleforms')) {
            var buttons = dialog.find(':button');
            $.each(buttons, function (index, value) {
                var form = $(value).parents('form');
                $(value).bind("click", function () {
                    event.preventDefault(); submitFormWithAjax(form, actionCK, validation, callbackfunction, dialog); return false;
                });
            });
        }

        var textFields = dialog.find(':text,:password');
        $.each(textFields, function (index, value) {
            var form = $(value).parents('form');
            $(value).bind('keydown', function (e) {
                if (e.which == 13) {
                    e.preventDefault(); submitFormWithAjax(form, actionCK, validation, callbackfunction, dialog); return false;
                }
            });
        });

        var opacity = 0.8;

        if (a.attr('opacity')) {
            opacity = a.attr('opacity');
        }

        if (a.attr('refreshoncancel')) {
            OnCloseDialog = function () {
                location.href = location.href;
            }
        }
        else {
            OnCloseDialog = function () {

            }
        }

        dialog.dialog(
        {
            title: a.attr('title') ? a.attr('title') : '',
            modal: true,
            buttons: dialog_buttons,
            open: function () {
                $('.ui-dialog-buttonpane').find('button:contains("' + button_name + '")').addClass('admin-dialog-orange-button');
                $('.ui-dialog-buttonset').addClass('admin-dialog-buttonset');
                $('.ui-widget-overlay').css('opacity', opacity);
                $.validator.unobtrusive.parse('form');
                //added to disable auto focus on first input
                if (autoFocus != "") {
                    $('input,textarea,select').blur();
                }
                $('input[placeholder]').simpleWaterMark('watermark');
                var oDialog = $(this);
                oDialog.find('form').submit(function () {
                    submitFormWithAjax($(this), actionCK, validation, callbackfunction, oDialog);
                    return false;
                });
            },
            close: function () {
                $(this).remove();
                $('.ui-widget-overlay').css('opacity', 0.8);
                OnCloseDialog();
            },
            width: width,
            dialogClass: a.attr('dialogClass') ? a.attr('dialogClass') : ''
        });
    }, 'html');

    return false;
}

function submitFormWithAjax(form, action, validation, callbackfunction, dialog) {
    if(action != null){
        eval(action);
    }
    if (validation != null) {
        if (!eval(validation))
            return false;
    }
    if ($(form).valid()) {
        $.ajax({
            url: $(form).attr('action'),
            data: $(form).serialize(),
            type: ($(form).attr('method')),
            dataType: 'text',
            success: function (data, textStatus, XMLHttpRequest) {
                if (callbackfunction) {
                    dialog.remove();
                    eval(callbackfunction);
                    return;
                }

                if (data == 'success') {
                    location.href = location.href;
                }
                else if (data.substring(0, 7) == 'success') {
                    location.href = data.substring(8);
                }
                else {
                    $('#formDialog').html(data);
                    var buttons = dialog.find(':button');          
                    $.each(buttons, function (index, value) {
                        var form = $(value).parents('form');    
                        $(value).bind("click", function () {
                            event.preventDefault(); submitFormWithAjax(form, null, null, callbackfunction, dialog); return false;
                        });
                    });
                    var textFields = dialog.find(':text,:password');
                    $.each(textFields, function (index, value) {
                        var form = $(value).parents('form');
                        $(value).bind('keydown', function (e) {
                            if (e.which == 13) {
                                e.preventDefault(); submitFormWithAjax(form, null, null, callbackfunction, dialog); return false;
                            }
                        });
                    });
                }
            }
        });
    }
    return false;        
}
function OnSuccess(data, textStatus, XMLHttpRequest) {
    if (data == 'success') {    
        location.href = location.href;
    }
    else if (data.substring(0, 7) == 'success') {
        location.href = data.substring(8);
    }
    else {
        $('#formDialog').html(data);
    }
}
