var animation = true;
var page = 1;
var welcomeScroll;

function loginOnEnter(event) {
    var event = new Event(event);
    
    if (event.key == 'enter')
        login();
}

function login() {
    if (!animation) return;
    animation = false;
    
    var username = $('loginUsername').value;
    var password = $('loginPassword').value;
    var remember = $('loginRemember').checked;
    
    new Json.Remote('/rpc/login/', {
        onComplete: function(response) {
            animation = true;
                    
            if (response.isValidLogin) {
                window.location = response.redirectLocation;
            } else {
                showError($('loginBlock'), response.errorSources, response.errorTitle,
                    response.errorDescription);
            }
            
        }
    }).send({'userName': username, 'password': password, 'remember': remember});
}

function register() {
    if (!animation) return;
    animation = false;
    
    var username = $('registerUsername').value;
    var password = $('registerPassword').value;
    var email = $('registerEmail').value;
    var remember = $('registerRemember').checked;
    
    new Json.Remote('/rpc/register/', {
        onComplete: function(response) {
            animation = true;
            
            if (response.isValidLogin) {
                window.location = response.redirectLocation;                
            } else {
                showError($('registerBlock'), response.errorSources, response.errorTitle,
                    response.errorDescription);
            }
        }
    }).send({'userName': username, 'password': password, 'email': email, 'remember': remember});
}

// Login/register animation functions

function toggleLogin() {
    if (!animation) return;
    animation = false;
    
    var isLogin = ($('loginBlock').getStyle('display') == 'none');
    var fromElement = isLogin ? $('registerBlock') : $('loginBlock');
    var fromEmail = isLogin ? $('divRegisterEmail') : $('divLoginEmail');
    var toElement = isLogin ? $('loginBlock') : $('registerBlock');
    var toEmail = isLogin ? $('divLoginEmail') : $('divRegisterEmail');
    var toField = isLogin ? $('loginUsername') : $('registerUsername');
    var emailHeight = isLogin ? 0 : 90;
    
    hideError(fromElement, function() {
        fromEmail.effect('height', {
            duration: 500,
            onComplete: function() {
                toEmail.setStyle('height', emailHeight);
                fromElement.setStyle('z-index', 0)

                toElement.setStyles({
                   'display': 'inline',
                   'opacity': 0,
                   'z-index': 1
                });

                toElement.effect('opacity', {
                   duration: 500,
                   onComplete: function() {
                       animation = true;

                       fromElement.setStyle('display', 'none');
                       
                       toField.focus();
                   }
                }).start(0, 1);
            }
        }).start(emailHeight);    
    });
}

function openWindow(url, width, height) {
    if (navigator.appVersion.indexOf("MSIE") == -1) {
        var left = window.screenX + ((window.getWidth() - width) / 2);
        var top = window.screenY + ((window.getHeight() - height) / 2);
    } else {
        var left = window.screenLeft + ((window.getWidth() - width) / 2);
        var top = window.screenTop + ((window.getHeight() - height) / 2);
    }

    var windowProperties = 'toolbar=no, menubar=no, scrollbars=yes, resizable=yes, stausbar=no, height=' + 
        height + ', width=' + width + ', left=' + left + ', top=' + top;

    var bwWin = window.open(url, 'bookwormWindow', windowProperties);

    bwWin.focus();
}

function switchPage(pageNumber) {
    page = pageNumber;
    welcomeScroll.toElement('page' + pageNumber);
}

window.addEvent('domready', function() {
    welcomeScroll = new Fx.Scroll('pages', {
        wheelStops: false
    });
    
    $('loginUsername').focus();
    $('loginUsername').onkeypress = loginOnEnter;
    $('loginPassword').onkeypress = loginOnEnter;
});