(function($) {
    $(document).ready(function() {
        var register_action    = $('#register_action'),
            login_action       = $('#login_action'),
            modal_registration = $('#modal_registration'),
            modal_login        = $('#modal_login'),
            already_registered = $('#already_registered > a:first').get(0),
            // isBadIe            = $.browser.msie && ($.browser.version.substr(0,1) == '6' || $.browser.version.substr(0,1) == '7');
            isBadIe            = $.browser.msie && ($.browser.version.substr(0,1) == '7');
            alignModal         = function (caller, modal) {
                var pos = $(caller).position();
                // alert(isBadIe);
                if (isBadIe) {
                    pos['top'] = '-' + Math.abs(pos['top'] - 20) + 'px';
                    // alert(pos['top']);
                } else {
                    // pos['top'] = '-' + Math.abs(pos['top'] / 5 - 10) + 'px';
                    pos['top'] = '-10px';
                }
                // alert(pos['top']);

                pos['left'] = (pos['left'] - 10) + 'px';

                $(modal).css('top', pos['top']).css('left', pos['left']);
            },
            toggleModal        = function (caller, to_show) {
                $(to_show).show();
                $(caller).addClass('checked');
                $(caller).css('z-index', 999);

                return false;
            },
            toggleModals       = function (caller, opposite, to_show, to_hide) {
                $(to_hide).hide();
                $(to_show).show();
                $(opposite).removeClass('checked');
                $(caller).addClass('checked').blur();

                $(caller).css('z-index', 999);
                $(opposite).css('z-index', 0);

                return false;
            };

        // Add listener on closing modal
        document.modal_close_listeners = [];
        document.modal_close_listeners.push(function (modal) {
            if (modal.attr('id') == 'modal_registration') {
                $(register_action).removeClass('checked');
            } else if (modal.attr('id') == 'modal_login') {
                $(login_action).removeClass('checked');
            }
        });

        // Align user's modal dialogs and bind actions
        if (modal_registration.size() > 0 && modal_login.size() > 0) {
            alignModal(register_action, modal_registration);
            alignModal(login_action, modal_login);

            register_action.click(function () {
                return toggleModals(this, login_action, modal_registration, modal_login);
            });
            login_action.click(function () {
                return toggleModals(this, register_action, modal_login, modal_registration);
            });

            // Open login dialog on click if this page is not login page
            if (already_registered != undefined) {
                $(already_registered).click(function () {
                    return toggleModals(login_action, register_action, modal_login, modal_registration);
                });
            }
        } else if (modal_registration.size() > 0) {
            alignModal(register_action, modal_registration);

            register_action.click(function () {
                return toggleModal(this, modal_registration);
            });
        } else if (modal_login.size() > 0) {
            alignModal(login_action, modal_login);

            login_action.click(function () {
                return toggleModal(this, modal_login);
            });
        }

        // Input placeholders
        if (modal_login) {
            // Switch color of the field
            var cls = 'placeholded';
            $('#modal_login_form > div > input[alt]').each(function () {
                $(this).bind('focus', function () {
                    var o = $(this);
                    o.removeAttr('class');

                    if (o.val() == o.attr('alt')) {
                        o.val('');
                    }
                }).bind('blur', function () {
                    var o = $(this);

                    if (o.val() == '' || o.val() == o.attr('alt')) {
                        o.val(o.attr('alt')).attr('class', cls);
                    }
                }).attr('class', cls).val($(this).attr('alt')); // init field
            });
        }

        // Control modal dialogs
        $('.modal_close').live('click', function () {
            var modal = $($(this).parents('div:has(div[class="modal_top"])').get(0));
            modal.hide();

            if (document.modal_close_listeners.length > 0) {
                for (i = 0; i < document.modal_close_listeners.length; i++) {
                    document.modal_close_listeners[i](modal);
                }
            }
        });
    });
})(jQuery);
