/**
 * Scroller
 *
 * Implements javascript part of image scroller
 */
var Scroller = {
    url: '/escort.html?do=getmore',
    username: '',
    currentNumber: 0,
    currentPage: 0,

    /**
     * Initiates scrolle. Binds event handlers
     */
    init: function(params) {
        if (!this.username) {
            this.username = params.username;
            this.currentNumber = params.currentNumber;
            this.currentPage = params.currentPage;
        }

        if (params.url) {
            this.url = params.url;  
        }

        $('tr.escort_block').live('mouseover', function(){
            Scroller.unCurrent($(this).parent());

            $(this).removeClass('escort_block');
            $(this).addClass('escort_block_current');
            $(this).find('.scroller_details').css('line-height', '24px');
        });

        if (this.username) {
            this.bindScrollerArea();
        }

        $('#scrollerWrapper .scroller_pager a').live('click', function() {
            Scroller.getPage($(this))
            return false;
        });
    },

    /**
     * Removes current class for left row
     */
    unCurrent: function(target) {
        var oCurrentTr = target.find('tr.escort_block_current');
        oCurrentTr
            .removeClass('escort_block_current')
            .addClass('escort_block')
            .find('.scroller_details')
                .css('line-height', '');
    },

    /**
     * Binds event handler for mouseleave of the scroller
     * in order to set the current row
     */
    bindScrollerArea: function() {
        $('.scroller_area').mouseleave(function(){
            Scroller.unCurrent($(this));

            var oCurrentTr = null;
            oCurrentTr = $(this).find('tr:eq('+(Scroller.currentNumber - (Scroller.currentPage-1) * 10)+')');

            oCurrentTr.removeClass('escort_block');
            oCurrentTr.addClass('escort_block_current');
        });
    },

    /**
     * Get specific page via ajax request
     */
    getPage: function(link) {
        var oScrollerWrapper = link.parents('#scrollerWrapper');

        $.ajax({
            'url': Scroller.url,

            'beforeSend': function () {
                var oScrollerLoading = oScrollerWrapper.find('.scroller_loading');
                oScrollerLoading.height($('.scroller_area').height())
                    .css('top', $('.scroller_area').position().top)
                    .css('left', $('.scroller_area').position().left)
                    .show();
            },

            'data': {
                'page': link.attr('rel'),
                'username': Scroller.username
            },

            'dataType': 'html',

            'success': function (data) {
                oScrollerWrapper.replaceWith(data);

                if (link.attr('rel') == Scroller.currentPage) {
                    Scroller.bindScrollerArea();
                } else {
                    var oCurrentTr = oScrollerWrapper.find('.scroller_area tr:first');

                    oCurrentTr.removeClass('escort_block');
                    oCurrentTr.addClass('escort_block_current')
                        .find('.scroller_details')
                            .css('line-height', '24px');
                }

            },

            'complete': function () {
                oScrollerWrapper.find('.scroller-loading').hide();
            }

        });
    }
};
