/**
 * Класс для работы с меню станций
 * @requires jQuery
 * @namespace RadioCon
 */

RadioCon.Stations = function() {

    var ICON_FADE_DURATION = 150;
    var ICON_FADE_VALUE = .5;

    var NOW_SLIDE_INTERVAL = 60;
    var NOW_SLIDE_STEP = 3;

    var GET_SONG_TIMEOUT = 30000;
    var GET_SONG_INFO_URI = '/now/';

    var $wrap = $(), $now = $();
    var nowWidth = 0;
    var aInterval;

    function _init() {
        var $icons = $wrap.find('li');
        $icons.not('.active')
            .css({
                'opacity' : ICON_FADE_VALUE
            })
            .hover(
                function() {
                    $(this).stop().fadeTo(ICON_FADE_DURATION, 1);
                },
                function() {
                    $(this).stop().fadeTo(ICON_FADE_DURATION, ICON_FADE_VALUE);
                }
            );

        $icons.filter('.active')
            .append(document.createElement('ins'));

        getSong();
    }

    function getSong() {
        $.ajax({
            url : GET_SONG_INFO_URI,
            dataType : 'json',
            success: showSong
        });
    }

    function showSong(data) {
        if ((data.artist) && (data.name)) {
            data.artist = data.artist.replace(/;/g, ', ');
            if (!$now.length) {
                nowLeft = $wrap.width();
                $now = $(document.createElement('div'))
                    .css({ left : nowLeft })
                    .appendTo($(document.createElement('div')).addClass('now').appendTo($wrap));
                startSongAnimation();
            }
            $now.html('Сейчас в эфире «Радио-Континенталь»: <b>' + data.artist + ' — ' + data.name + '</b>');
            nowWidth = $now.width();
            setTimeout(getSong, GET_SONG_TIMEOUT);
        }
    }

    function startSongAnimation() {
        aInterval = window.setInterval(slideSong, NOW_SLIDE_INTERVAL);
    }
    function slideSong() {
        nowLeft -= NOW_SLIDE_STEP;
        if (nowLeft < -nowWidth) {
            nowLeft = $wrap.width();
        }
        $now.css({
            left : nowLeft
        });
    }

    return {
        init : function() {
            $wrap = $('#head .stations');
            if ($wrap.length)
                _init();
        }
    }
}()

