﻿/// <reference path="~/Scripts/jquery-1.3.2-vsdoc2.js" />

// Скрипты для табилицы рейтингов
var RatingTable = function() {

    // Урл сайта
    var SiteUrl = undefined;

    // текущая новость
    var _CurrentNews = jQuery(undefined);
    var _CurrentSelectedNews = jQuery(undefined);

    // текущая строка
    var _CurrentRow = jQuery(undefined);

    // Суммарная толщина бордюров в подсказке
    var _border = 2;

    // непосредственно отображение новости
    function _ShowNews(news, sender) {

        //debugger;
        // выделяем текущую строку
        if (_CurrentRow != undefined) {
            _CurrentRow.removeClass("selected");
        }
        _CurrentRow = jQuery(sender);
        _CurrentRow.addClass("selected");

        // запоминаем текущую
        if (_CurrentNews != undefined && _CurrentNews != _CurrentSelectedNews) {
            UnselectNews();
        }
        _CurrentNews = jQuery(news);
        _CurrentSelectedNews = _CurrentNews;

        // устанавливаем позицию с учетом ширины новости
        var p = _CurrentRow.position();
        _CurrentNews.css("left", p.left - _CurrentNews.width() - _border);
        _CurrentNews.css("top", p.top);

        // у текущей новости подгружаем картинку
        var image_holder = jQuery(".image_holder", _CurrentNews);
        image_holder.html('');
        image_holder.attr('style', '');
        var img = new Image(); // создаем картинку
        var imageUrl = _CurrentNews.attr("image"); // путь до картинки

        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(sender) {
        var playerId = parseInt(jQuery(sender).attr("pid"));

        // показыаем блок
        var news = jQuery('#playerNews');

        if (playerId == undefined || playerId <= 0)
            return;

        // получаем данные по игроку
        var data = undefined;
        jQuery.each(RatingTableData, function(index, value) {
            if (parseInt(value.playerid) == parseInt(playerId)) {
                data = value.data;
                return false;
            }
        });

        // отображаем полученные данные
        if (data != undefined) {

            // перенос элемента в попап
            function Append(name) {
                var to = jQuery("#" + name);
                if (to.length == 1) {
                    var item = jQuery("#" + name + "_" + playerId);
                    if (item.length == 1) {
                        item = item.clone();
                        to.html('');
                        item.appendTo(to);
                    }
                }
            }

            // Картинка
            news.attr("image", data.ImageUrl.replace(/&#58;/g, ":"));

            // Кнопки
            Append("buy");
            Append("sell");
            Append("pred");
            Append("cap");

            // Выбывший матч
            if (parseInt(data.MathOut) != -1000) {
                jQuery("#MathOut").html(data.MathOut);
                jQuery("#tdMathOut").css("display", "block");
            }
            else {
                jQuery("#tdMathOut").css("display", "none");
            }

            // Команда
            if (parseInt(data.TeamId) != -1000) {
                jQuery("#divTeam").css("display", "block");
                var a = jQuery("#divTeam").find("a");
                a.html(data.TeamName);
                a.attr("href", SiteUrl + "Teams/TeamSquad.aspx?teamid=" + data.TeamId);
            }
            else {
                jQuery("#divTeam").css("display", "none");
            }

            // Лига
            if (parseInt(data.ChampId) != -1000) {
                jQuery("#divChamp").css("display", "block");
                var a = jQuery("#divChamp").find("a");
                a.html(data.ChampName);
                a.attr("href", SiteUrl + "Leagues/?leagueId=24" + data.ChampId);
            }
            else {
                jQuery("#divChamp").css("display", "none");
            }

            // Стана
            if (data.CountryName != '') {
                jQuery("#divCountryName").css("display", "block");
                var a = jQuery("#CountryName");
                a.html(data.CountryName);
            }
            else {
                jQuery("#divCountryName").css("display", "none");
            }

            // Новость
            if (parseInt(data.NewsId) != -1000) {
                var newsPlaceHolder = jQuery("#newsPlaceHolder");
                newsPlaceHolder.css("display", "block");

                var newsLink = newsPlaceHolder.find("#newsLink");
                newsLink.html(data.Title);
                if (parseInt(data.GameId) != -1000) {
                    newsLink.attr("href", SiteUrl + "ratingmatches/GameProtocol.aspx?gameId=" + data.GameId);
                }
                else {
                    newsLink.attr("href", SiteUrl + "ratingmatches/GameProtocol.aspx?gameId=" + data.GameId);
                }

                newsPlaceHolder.find("p.abstract").html(data.News);
            }
            else {
                jQuery("#newsPlaceHolder").css("display", "none");
            }

            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);
                //}
            }
        }
        else {
        }
    }

    // снимает выделение новости
    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(10, function() {
        if (!weOnPopup) {
            UnselectNews();
        }
        //        });

    }

    // Инициализация событий
    function InitEvents() {
        var list = jQuery("tr.player");

        list.mouseenter(function() {
            ShowNews(this);
        });

        jQuery(".player_popup").mouseleave(function(e) {
            PlayerNews_MouseOut(this, e);
        });

        list.mouseleave(function(e) {
            MouseOut(this, e);
        });
    }

    // Инициализирующая функция
    function Init(siteUrl) {
        //alert('SiteInit started!');
        SiteUrl = siteUrl;
        //InitEvents();
    }

    // публичные методы
    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();
//    });
//});