Event.observe( window, 'load', init, false );

function init()
{
    auth();
}

function auth()
{
    if( $( 'sidemenu-login' ) ){
        $( 'sidemenu-login-form' ).hide();
        $( 'sidemenu-login-progress' ).style.display = 'block';
        $( 'sidemenu-login-complete' ).hide();

        new Ajax.Request(
            '/users/auth/' + new Date().getTime(),
            { method: 'get', onComplete: _callbackAuth,
              requestHeaders: [ 'X-Request', 'JSON' ] }
        );
    }
}

function _callbackAuth( req )
{
    $( 'sidemenu-login-progress' ).hide();

    var result = eval( '(' + req.responseText + ')' );
    if( ! result || ! result.auth ){
        $( 'sidemenu-login-form' ).style.display = 'block';
        $( 'sidemenu-login-complete' ).hide();
    }
    else{
        $( 'sidemenu-login-form' ).hide();
        $( 'sidemenu-login-complete' ).style.display = 'block';
        $( 'sidemenu-login-account' ).innerHTML = result.name.escapeHTML();
    }
}

function login()
{
    var params = {
        'login': $F( 'sidemenu-login-id' ),
        'password': $F( 'sidemenu-login-pass' )
    }

    $( 'sidemenu-login-form' ).hide();
    $( 'sidemenu-login-progress' ).style.display = 'block';
    $( 'sidemenu-login-complete' ).hide();

    new Ajax.Request(
        '/users/login/' + new Date().getTime(),
        { method: 'post',
          parameters: $H( params ).toQueryString(),
          onComplete: _callbackLogin,
          requestHeaders: [ 'X-Request', 'JSON' ] }
    );

}

function _callbackLogin( req )
{
    $( 'sidemenu-login-progress' ).hide();

    var result = eval( '(' + req.responseText + ')' );
    if( ! result || ! result.auth ){
        $( 'sidemenu-login-form' ).style.display = 'block';
        $( 'sidemenu-login-notice' ).innerHTML = 'ログインに失敗しました。';
        $( 'sidemenu-login-complete' ).hide();
    }
    else{
        $( 'sidemenu-login-form' ).hide();
        $( 'sidemenu-login-notice' ).innerHTML = '';
        $( 'sidemenu-login-complete' ).style.display = 'block';
        $( 'sidemenu-login-account' ).innerHTML = result.name.escapeHTML();
    }
}

function logout()
{
    $( 'sidemenu-login-form' ).hide();
    $( 'sidemenu-login-progress' ).style.display = 'block';
    $( 'sidemenu-login-complete' ).hide();

    new Ajax.Request(
        '/users/logout/' + new Date().getTime(),
        { method: 'post',
          onComplete: _callbackLogout,
          requestHeaders: [ 'X-Request', 'JSON' ] }
    );
}

function _callbackLogout( req )
{
    $( 'sidemenu-login-progress' ).hide();
    $( 'sidemenu-login-form' ).style.display = 'block';
    $( 'sidemenu-login-complete' ).hide();
}

