    function vidxGetProperties( user_id, select_to_update )
    {
        if ( vidxGetPropertiesUrl )
        {
            new Ajax.Request( 
                vidxGetPropertiesUrl,
                {
                    method: 'post',
                    parameters: { user_id: user_id },
                    onSuccess: function( transport )
                    {
                        var resp = transport.responseText.evalJSON();
                        
                        switch ( resp.response )
                        {
                            case 'success':
                                $$('._user_favorites').each( function( i ) { i.show(); } );
                                $(select_to_update).update( resp.optiontags );
                                
                                break;
                           
                            default:
                                $(select_to_update).update();
                                $$('._user_favorites').each( function( i ) { i.hide(); } );
                                
                                break;
                        }
                    },
                    onFailure: function()
                    {
                        $(select_to_update).update();
                    }
                }
            );
        }
    }
    function vidxGetSearches( user_id, select_to_update )
    {
        if ( vidxGetSearchesUrl )
        {
            new Ajax.Request( 
                vidxGetSearchesUrl,
                {
                    method: 'post',
                    parameters: { user_id: user_id },
                    onSuccess: function( transport )
                    {
                        var resp = transport.responseText.evalJSON();
                        
                        switch ( resp.response )
                        {
                            case 'success':
                                $$('._user_savedsearches').each( function( i ) { i.show(); } );
                                $(select_to_update).update( resp.optiontags );
                                    
                                break;
                           
                            default:
                                $(select_to_update).update();
                                $$('._user_savedsearches').each( function( i ) { i.hide(); } );
                                
                                break;
                        }
                    },
                    onFailure: function()
                    {
                        $(select_to_update).update();
                    }
                }
            );
        }
    }
    function vidxLogout()
    {
        new Ajax.Request( 
            vidxLogoutUrl,
            {
                method: 'get',
                onSuccess: function( transport )
                {
                    var resp = transport.responseText.evalJSON();
                    
                    switch ( resp.response )
                    {
                        case 'success':
                            $$('._user_loggedin').each( function( i ) { i.hide(); } );
                            $$('._user_loggedout').each( function( i ) { i.show(); } );
                            
                            $('pickASavedSearch').update( '' );
                            $('pickAFavorite').update( '' );
                            break;
                       
                        default:
                            alert( 'An error occurred on log-out, or you may be logged-out already.' );
                            break;
                    }
                },
                onFailure: function()
                {
                    alert( 'Could not connect to server.' );
                }
            }
        );
    }
    function vidxLogin( username, password )
    {
        new Ajax.Request( 
            vidxLoginUrl,
            {
                method: 'post',
                parameters: { ajax: 'true', username: username, password: password },
                onSuccess: function( transport )
                {
                    var resp = transport.responseText.evalJSON();
                    
                    switch ( resp.response )
                    {
                        case 'success':
                            $$('._user_loggedin').each( function( i ) { i.show(); } );
                            $$('._user_loggedout').each( function( i ) { i.hide(); } );
                            $('loggedInAs').update( username );
                            
                            vidxGetSearches( resp.userId, 'pickASavedSearch' );
                            vidxGetProperties( resp.userId, 'pickAFavorite' );
                            break;
                       
                        default:
                            $$('._user_loggedin').each( function( i ) { i.hide(); } );
                            $$('._user_loggedout').each( function( i ) { i.show(); } );
                            
                            $('pickASavedSearch').update( '' );
                            $('pickAFavorite').update( '' );
                            alert( 'Wrong username or password' );
                            
                            break;
                    }
                },
                onFailure: function()
                {
                    alert( 'Could not connect to server.' );
                }
            }
        );
    }
    function vidxSaveSearch( criteria, search_name )
    {
        if ( vidxSaveSearchUrl )
        {
            new Ajax.Request( 
                vidxSaveSearchUrl,
                {
                    method: 'post',
                    parameters: { criteria: criteria, search_name: search_name },
                    onSuccess: function( transport )
                    {
                        var resp = transport.responseText.evalJSON();
                        
                        alert( "'"+search_name+"' saved." );
                        
                        switch ( resp.response )
                        {
                            case 'success':
                                $('searchRemoveButton').show();
                                break;
                           
                            default:
                                alert( 'Could not save search.' );
                                break;
                        }
                        
                        
                    },
                    onFailure: function()
                    {
                        alert( 'Could not connect to server.' );
                    }
                }
            );
        }
    }
    function vidxRemoveSearch( criteria )
    {
        if ( vidxRemoveSearchUrl )
        {
            new Ajax.Request( 
                vidxRemoveSearchUrl,
                {
                    method: 'post',
                    parameters: { criteria: criteria },
                    onSuccess: function( transport )
                    {
                        var resp = transport.responseText.evalJSON();
                        
                        switch ( resp.response )
                        {
                            case 'success':
                                $('saved_search').value = '';
                                $('searchRemoveButton').hide();
                                break;
                           
                            default:
                                alert( 'Could not remove saved search.' );
                                break;
                        }
                        vidxGetSearches( user_id, 'pickASavedSearch' )
                    },
                    onFailure: function()
                    {
                        alert( 'Could not connect to server.' );
                    }
                }
            );
        }
    }