﻿var tickerID = null;
var tickerTimer = null;
var ticker_p1 = 100;
var ticker_p2 = 0;
var ticker_pos = 0;
var ticker_div_id;
var ticker_def_step = 0.002;
var ticker_ultra_step = 0.02;
var ticker_speed_step = 0.008;
var ticker_step = ticker_def_step;

var BlseTicker = {

    tickerMove: function() {
        ticker_pos = ticker_pos + ticker_step;
        if (ticker_pos > 5)
            ticker_pos = 0;
        if (ticker_pos < 0)
            ticker_pos = 0;
        this.tickerPos();
    },

    tickerPos: function() {
        var x = tickerID.style.left = this.tickerCalc() + 'em';
    },

    tickerCalc: function() {
        return (ticker_p2 - ticker_p1) * (ticker_pos) + ticker_p1;
    },

    tickerAnimate: function(id) {
        tickerID = document.getElementById(id);
        ticker_p1 = 100;
        ticker_p2 = 0;
        total = ticker_p1 - ticker_p2;
        ticker_pos = 0.5;
        this.tickerStart();
    },

    tickerStart: function() {
        if (tickerTimer == null) {
            tickerTimer = setInterval(tickerMove, 40);
            this.tickerNormalSpeed();
        }
    },

    tickerStop: function() {
        clearInterval(tickerTimer);
        tickerTimer = null;
        //ticker_step = 0;
    },

    tickerFastLeft: function() {
        ticker_step = ticker_speed_step;
    },
    tickerFastRight: function() {
        ticker_step = -ticker_speed_step;
    },
    tickerNormalSpeed: function() {
        ticker_step = ticker_def_step;
    },
    tickerUltraFastLeft: function() {
        ticker_step = ticker_ultra_step;
    },
    tickerUltraFastRight: function() {
        ticker_step = -ticker_ultra_step;
    },

    Element: function(el, body, class_name, href) {
        var res = '';
        res += '<' + el;
        if (class_name != null && class_name != 'undefined')
            res += ' class="' + class_name + '"';
        if (href != null && href != 'undefined')
            res += ' href="' + href + '"';
        res += '>';
        if (body != null && body != 'undefined')
            res += body;
        res += '</' + el + '>';
        return res;
    },

    tickerTransform: function(data) {

        var items = eval(data);
        var res = '';
        for (var i = 0; i < items.length; i++) {
            var span = this.Element('span', items[i].AvgPerChange);
            var link = this.Element('a', items[i].Description, null, 'SecurityRedirect.aspx?code=' + items[i].Code);
            var class_name;
            if (items[i].Direction > 0)
                class_name = 'ticker-rise';
            else if (items[i].Direction < 0)
                class_name = 'ticker-fall';
            else
                class_name = 'ticker-nochange';

            res += this.Element('span', link + '&nbsp;' + items[i].AvgPrice + span, class_name);
        }
        return res;
    },

    tickerDataLoaded: function(data) {
        var div = document.getElementById(ticker_div_id);
        var ndiv = document.createElement('div');
        ndiv.innerHTML = this.tickerTransform(data);
        div.appendChild(ndiv);
        this.tickerAnimate(ticker_div_id);
    },

    loadTicker: function(id, langId) {
        try {            
            ticker_div_id = id;
            //PageMethods.GetTickerData(tickerDataLoaded);
            var url = '../services/defaultTicker.ashx?langId='+langId;
            var request = new Request.JSON({
                url: url,
                method: 'get',
                onComplete: tickerDataLoaded
            }).send();
        } catch (e) {
            //alert(e);
        }
    }
}

function tickerDataLoaded(data) {
    BlseTicker.tickerDataLoaded(data);
}

function tickerMove() {
    BlseTicker.tickerMove();
}