function wall( url, delete_url, load_messages_url, id )
{
        this.url = url;
        this.delete_url = delete_url;
        this.load_messages_url = load_messages_url;
        this.id  = id;

        this.req = new Object();
        this.delete_req = new Object();
        this.report_req = new Object();

        this.sendMessage = function()
        {
                var message = $("#message").attr( 'value' );
                var photo_id = $("#photo_id").attr( 'value' );
                var video_id = $("#video_id").attr( 'value' );
                if(message) sendRequest( wall.req, 
                                         wall.url, 
                                         {id: wall.id, message: message, photo_id: photo_id, video_id: video_id}, 
                                         function()
                                         {
                                                $("#ajax_loading").show();
                                         },
                                         function( data )
                                         {
                                                $("#ajax_loading").hide();
                                                $("#message").attr( 'value', '' );
                                                $("#photo_id").attr( 'value', '' );
                                                $("#video_id").attr( 'value', '' );
                                                wall.updateMessageList( data );
                                                showMessageFromDiv("sending_success");
                                         },
                                         function( data )
                                         {
                                                $("#ajax_loading").hide();
                                                showMessageFromDiv("sending_failed");
                                         });
        }


        this.deleteMessage=function( id )
        {
                if( !id ) return false;
                showConfirmDialog("Delete message?", function(){
                        sendRequest( wall.delete_req, 
                                     wall.delete_url, 
                                     {id: id}, 
                                     function() {
                                        $("#ajax_loading").show();
                                     },
                                     function( data ) {
                                        $("#ajax_loading").hide();
                                        $("#message_delete_" + id).hide();
                                        $("#message_" + id).show();
                                        wall.updateMessageList( data );
                                     },
                                     function( data ) {
                                        $("#ajax_loading").hide();
                                        showMessageFromDiv("deleting_failed");
                                     });
                });
        }

        this.updateMessageList = function( data )
        {
                if( !data ) return false;
                this.showMessageList( data.messages, data.count );
                this.showPagination( data.pagination );
        }

        this.showPagination = function( pages )
        {
                if( !pages ) return false;
                var container = $("#pagination");
                if( !container ) return false;
                container.empty();
                container.append( pages );
        }

        this.showMessageList = function( comments, count )
        {
                if( !comments || !count) return false;
                var container = $("#wall");
                if( container )
                {
                        container.empty();
                        container.append( comments );
                }
                var container = $("#wall_count");
                if( container )
                {
                        container.empty();
                        container.append( count );
                }

        }

        this.loadWallMessages = function( page )
        {
                sendRequest( this.req, 
                             this.load_messages_url, 
                             {id: this.id, page: page}, 
                             function()
                             {
                                $("#ajax_loading").show();
                             },
                             function( data )
                             {
                                $("#ajax_loading").hide();
                                wall.updateMessageList( data ); 
                             },
                             function( data )
                             {
                                $("#ajax_loading").hide();
                                showMessageFromDiv( "error_loading_messages" );
                             });
                return false;
        }
}