/*
 * Привязка к ссылкам на страницы персон всплывающих окошек с фотографией.
 * Url адрес фотографии берется из параметра rel, а роль из параметра rev тега ссылки.
 */

$(document).ready(function(){
    // Всплывающая фотография персоны при наведении на имя актера или режиссера курсором мышки
    
    // Смещение фотографии относительно позиции курсора мыши
    var xOffset = -50;
    var yOffsetBottom = 30;
    var yOffsetTop = 15;
    
    // Горизонтальный и вертикальный отступ от границ окна 
    // для предотвращения сокрытия всплывающей фотографии за границами окна браузера
    var horizontalOffset = 30;
    var verticalOffset = 15;
    
    function portraitXPosition(e) {
        var xPosition = e.pageX + xOffset;
        
        if ((xPosition + $("#portrait_preloader").width() + horizontalOffset) > window.innerWidth)
            xPosition = window.innerWidth - $("#portrait_preloader").width() - horizontalOffset;
        
        return xPosition;
    }
    
    function portraitYPosition(e) {
        var yPosition = e.pageY + yOffsetBottom;
        
        if ((e.clientY + yOffsetBottom + $("#portrait_preloader").height() + verticalOffset) > window.innerHeight)
            yPosition = e.pageY - yOffsetTop - $("#portrait_preloader").height();
        
        return yPosition;
    }
    
    $("a.person").hover(
        function(e) {
            var portrait = $('<div/>')
                    .addClass('portrait')
                    .css('background-image', 'url('+ $(this).attr('rel') +')')
                    .css('background-repeat', 'no-repeat');
            var portrait_preview = $('<div/>')
                    .attr('id', 'portrait_preloader')
                    .append(portrait);
            var role = $('<div/>')
                    .addClass('character')
                    .html($(this).attr('rev'));
            
            if ($(this).attr('rev')) {
                portrait_preview.append(role);
            }
            
            $("body").append(portrait_preview);
            
            $("#portrait_preloader")
                .css("top", portraitYPosition(e) + "px")
                .css("left", portraitXPosition(e) + "px")
                .fadeIn("fast");						
        },
        function() {
            $("#portrait_preloader").remove();
        }
    );
    
    $("a.person").mousemove(function(e){
        $("#portrait_preloader")
            .css("top", portraitYPosition(e) + "px")
            .css("left", portraitXPosition(e) + "px");
    });			
});
