Вход Регистрация
Файл: plugins/corevisitor/static/js/user_fade.js
Строк: 149
<?php
(function( $, factory ){'use strict';
    $(function(){
factory.call(this, $)}.bind(this));
}).
call(windowwindow.jQuery, function( $ ){'use strict';

    var 
= {}, delay 300;

    var 
ErrorFactory = {
        
getSimpleError: function( msg )
        {
            return new 
Error(msg);
        },
        
getTypeError: function( indexneedobject )
        {
            return new 
TypeError(
                
'Invalid Argument Exception. Expects parameter {$index} to be {$need}, {$object} given'
                    
.replace('{$index}'index)
                    .
replace('{$need}'need)
                    .
replace('{$object}'getObjectType(object))
            );
        }
    };

    [
'Object''Array'].forEach(function( item )
    {
        
_['is' item] = function( object )
        {
            return 
getObjectType(object) === item;
        };
    });

    
_.isEmptyObject = function( object )
    {
        if ( !
_.isObject(object) )
        {
            throw 
ErrorFactory.getTypeError(1'Object'object);
        }

        return 
Object.keys(object).length === 0;
    };

    function 
Themevisitorindexdom )
    {
        
this.index index;
        
this.element dom;
        
this.userData = {};
    }

    
Themevisitor.prototype.required = ['src''url''displayName'];
    
Themevisitor.prototype.run fluent(function()
    {
        var 
userData this.userData,
            
avatar = $(this.element.querySelector('.ul_themevisitor_avatar')),
            
avatarLink = $('a'avatar),

            
infoBlock = $(this.element.querySelector('.ul_themevisitor_info')),
            
userLink = $(infoBlock[0].querySelector('.ul_themevisitor_info_name a')),
            
sexAge = $(this.element.querySelector('.info_sex_age')),
            
address = $(this.element.querySelector('.info_address'));

        var 
avatarDelay this.index <= delay 2;
        var 
infoDelay this.index <= delay 0;

        
setTimeout(function()
        {
            
avatar.animate({opacity0}, {duration400complete: function()
            {
                
avatar.css('background-image''url(' userData.src ')');
                
avatarLink.attr('href'userData.url);
                
avatar.animate({opacity1}, {duration800});
            }});
        }, 
avatarDelay);

        
setTimeout(function()
        {
            
infoBlock.animate({opacity0}, {duration400complete: function()
            {
                
userLink.attr('href'userData.url).text(userData.displayName);
                
address.text(userData.data.address || '');

                if ( 
userData.data.sex )
                {
                    
sexAge.text(userData.data.sex + (userData.data.age ', ' userData.data.age ''));
                }
                else
                {
                    
sexAge.text(userData.data.age || '');
                }

                
infoBlock.animate({opacity1}, 800);
            }});
        }, 
infoDelay);
    });
    
Themevisitor.prototype.assignUser fluent(function( userData )
    {
        if ( !
isIncludeRequiredProperty(userDatathis.required) )
        {
            return;
        }

        
this.userData userData;

        var 
img = new Image();

        
img.onload img.onerror = function()
        {
            
this.run();
        }.
bind(this);
        
img.src this.userData.src;
    });

    if ( 
_.isEmptyObject(this.fadeUserParams) || !isIncludeRequiredProperty(this.fadeUserParams, ['userList']) )
    {
        throw 
ErrorFactory.getSimpleError('User list required');
    }

    var 
params = $.extend({}, this.fadeUserParams);
    var 
themevisitorItems document.getElementById('fade-user-list').querySelectorAll('.ul_themevisitor_item');
    var 
themevisitorCollect = {};

    for ( var 
0params.maxi++ )
    {
        
themevisitorCollect[i] = new Themevisitor(1themevisitorItems[i]);
    }

    
preloadImage(getUserSrcList(params.userList.slice(params.maxparams.max 2)));

    
setInterval(function()
    {
        var 
idList params.userList;
        var 
indexList idList.splice(params.max);
        
params.userList indexList.concat(idList);
        var 
_delay 0;

        $.
each(themevisitorCollect, function()
        {
            
setTimeout(function()
            {
                
this.assignUser(params.userList[this.index]);
            }.
bind(this), _delay);

            
_delay += delay;
        });

        
preloadImage(getUserSrcList(params.userList.slice(params.maxparams.max 2)));
    }, 
8000);

    function 
getObjectType( object )
    {
        return 
Object.prototype.toString.call(object).slice(8, -1);
    }

    function 
fluent)
    {
        return function()
        {
            
f.apply(thisarguments);

            return 
this;
        }
    }

    function 
isIncludeRequiredPropertyobjectrequired )
    {
        if ( !
_.isObject(object) )
        {
            throw 
ErrorFactory.getTypeError(1'Object'object);
        }

        if ( !
_.isArray(required) )
        {
            throw 
ErrorFactory.getTypeError(1'Array'required);
        }

        return 
required.every(function( item )
        {
            return 
object.hasOwnProperty(item);
        });
    }

    function 
getUserSrcListuserList )
    {
        var 
result = [];

        
userList.forEach(function( user )
        {
            
result.push(user.src);
        });

        return 
result;
    }

    function 
preloadImageimgList )
    {
        
imgList.forEach(function( src )
        {
            
setTimeout(function( src )
            {
                new 
Image().src src;
            }, 
10src);
        });
    }
});
?>
Онлайн: 1
Реклама