﻿/// <reference path="~/Scripts/jquery-1.3.2-vsdoc2.js" />

// Скрипты для табилицы рейтингов
var RatingTable = function() {

    // Урл сайта
    var SiteUrl = undefined;

    // текущая новость
    var _CurrentNews = jQuery(undefined);

    // текущая строка
    var _CurrentRow = jQuery(undefined);

    // Суммарная толщина бордюров в подсказке
    var _border = 2;

    // непосредственно отображение новости
    function _ShowNews(news, sender) {

        // выделяем текущую строку
        if (_CurrentRow != undefined) {
            _CurrentRow.removeClass("selected");
        }
        _CurrentRow = jQuery(sender);
        _CurrentRow.addClass("selected");

        // запоминаем текущую                     
        if (_CurrentNews != undefined) {
            UnselectNews();
        }
        _CurrentNews = jQuery(news);

        // устанавливаем позицию с учетом ширины новости
        var p = _CurrentRow.position();
        _CurrentNews.css("left", p.left - _CurrentNews.width() - _border);
        _CurrentNews.css("top", p.top);

        // у текущей новости подгружаем картинку
        var image_holder = jQuery(".image_holder", _CurrentNews);
        var img = new Image(); // создаем картинку
        var imageUrl = _CurrentNews.attr("image"); // путь до картинки

        var tmpImg = new Image();
        tmpImg.src = imageUrl;

        jQuery(img).load(function() {
            var self = jQuery(this);
            image_holder.css("height", self.height());
            image_holder.html(this); // добавляем в контейнер
            self.fadeIn(); // показываем  

            var w = img.width != 0 ? img.width : jQuery(this).attr("width");
            var h = img.height != 0 ? img.height : jQuery(this).attr("height");

            if (h * 1.0 / w < 140 * 1.0 / 100) {
                if (h == 0) h = 1;
                jQuery(this).attr("width", 100);
                jQuery(this).attr("height", h * 100 / w);
            }
            else {
                if (w == 0) w = 1;
                jQuery(this).attr("width", w * 140 / h);
                jQuery(this).attr("height", 140);
            }


        }).attr({
            // устанавливаем атрибуты загруженной картинки
            src: imageUrl,
            alt: ''
        });
    }

    // Показывает новость игрока
    function ShowNews(playerId, sender) {
        if (playerId == undefined || playerId <= 0)
            return;

        // показыаем блок
        var news = jQuery('#player_' + playerId);
        if (news != undefined && news.length > 0) {
            news = news[0];
            if (news.style.display != 'block') {
                news.style.display = 'block';
                news.style.zIndex = '3000';
                _ShowNews(news, sender);
            }
        }
    }

    // снимает выделение новости
    function UnselectNews() {
        if (_CurrentNews != undefined) {
            _CurrentNews.css("display", "none");
            _CurrentNews = undefined;

            if (_CurrentRow != undefined) {
                _CurrentRow.removeClass("selected");
                weOnPopup = false;
            }
        }
    }

    var weOnPopup = false;
    // двигаем над новостью
    function PlayerNews_MouseMove(sender) {
        weOnPopup = true;
        if (sender.style.display != 'block') {
            _CurrentNews = jQuery(sender);
            _CurrentNews.css("display", "block");
            _CurrentRow.addClass("selected");
        }
    }

    // покидаем новость
    function PlayerNews_MouseOut(sender, e) {
        UnselectNews();
    }


    // покидаем область таблицы
    function MouseOut(sender, e) {
        jQuery(this).delay(100, function() {
            if (!weOnPopup
        ) {
                UnselectNews();
            }
        });

    }

    // Инициализация событий
    function InitEvents() {
        jQuery(".player_popup").mouseleave(function(e) {
            PlayerNews_MouseOut(this, e);
        });
        jQuery(".players_list_container .player").mouseleave(function(e) {
            MouseOut(this, e);
        });
    }

    // Инициализирующая функция
    function Init(siteUrl) {
        InitEvents();
        SiteUrl = siteUrl;
    }

    // публичные методы
    return {
        ShowNews: ShowNews,
        PlayerNews_MouseMove: PlayerNews_MouseMove,
        InitEvents: InitEvents,
        Init: Init
    }
} ();

// Загрузка
jQuery(function() {
    // Отлавливаем постбеки на апдейт панелах
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(function(sender, args) {
        RatingTable.InitEvents();
    });
});