YUI().use('io-form', 'event', 'json', function(Y) {
    Y.on("click", requestSignIn, "#submit-sign-in-widget");
    
    function requestSignIn(e) {
        var form = Y.Node.get('#sign-in-widget-form');
        var uri  = form.getAttribute('action');
        var node = Y.Node.get('#sign-in-widget-message');
        
        node.setStyle('display', 'none');
        
        if (node.test('.message-error')) {
            node.removeClass('message-error');
        }
    
        var request = Y.io(uri + '/format/json', {
            method: 'POST',
            form: {
                id: form
            },
            on: {
                complete: completeSignIn
            }
        });
    }
    
    function completeSignIn(id, o) {
        var response = Y.JSON.parse(o.responseText);
        
        if (!response.isSuccess) {
            var node = Y.Node.get('#sign-in-widget-message');
            
            if (!node.test('.message-error')) {
                node.addClass('message-error');
            }
            
            node.setStyle('display', 'block');
            node.set('innerHTML', response.errorMessage);
        } else {
            var request = Y.io('/authentication/sign-in-widget', {
                method: 'GET',
                on: {
                    complete: completeSignInRepaint
                }
            });
        }
    };
    
    function completeSignInRepaint(id, o) {
        var response = o.responseText;
        var node     = Y.Node.get('#sign-in-widget');
        var newNode  = Y.Node.create(response);
        var parentNode = node.get('parentNode');
        parentNode.replaceChild(newNode, node);
        location.reload();
    }
});
