﻿Agility.RegisterNamespace("BNN.Controls.DynamicStockQuotes");

(function(DSQ, $) {

    var defaults = {
        Container: { }
    };

    var properties = null;
    var stockElemClassKey = ".DynamicStockQuote";

    DSQ.OnLoad = function(p) {

        properties = $.extend({ }, defaults, p || { });

        $(stockElemClassKey).each(function(i, item) {

            var symbol = $(this).text();
            if (symbol == '') return;

            _getStockQuote($(this), symbol);
        });
    };

    var _getStockQuote = function(obj, symbol) {
        $.getJSON(MarketDataServiceUrl + "/GetStockQuote?symbol=" + symbol + "", function(result) {

            if (result != undefined) {
                var stockLink = $("<a></a>").attr("href", StockPageUrl + symbol).text(symbol);

                obj.text("");
                obj.append(stockLink);

                var change = result.NetChange;
                var fltChange = parseFloat(change);
                var spanChange = $("<span></span>");

                if (fltChange > 0) {
                    spanChange.addClass('Positive');
                } else if (fltChange < 0) {
                    spanChange.addClass('Negative');
                }

                var price = result.Last;
                if (price != null && price != "") {
                    spanChange.append("&nbsp;");
                    spanChange.append(_formatData(price));
                }
                if (change != null && change != "") {
                    spanChange.append("&nbsp;");
                    spanChange.append(_formatData(change));
                }
                var percentChange = result.PercentChange;
                if (percentChange != null && percentChange != "") {
                    spanChange.append("&nbsp;");
                    spanChange.append(_formatData(percentChange) + "%");
                }

                obj.append(spanChange);

                $.getJSON(MarketDataServiceUrl + "/GetMarketMonitorSmallChartUrl?symbol=" + symbol + "", function(resultChartUrl) {

                    if (resultChartUrl != undefined) {
                        obj.find("a").tooltip({
                            delay: 0,
                            showURL: false,
                            bodyHandler: function() {
                                return "<img src='" + resultChartUrl + "' alt=''/>";
                            }
                        });
                    }
                });
            }
        });
    };

    var _formatData = function(data) {

        var tmp = data;
        if (tmp.indexOf(".") == 0) {
            tmp = "0" + tmp;
        } else if (tmp.indexOf("-.") == 0) {
            tmp = "-0." + tmp.substring(2);
        }

        var tmpFloat = Math.round(100 * parseFloat(tmp)) / 100;
        var tmpStr = tmpFloat.toString();

        if (tmpStr.indexOf('.') < 0) {
            tmpStr += '.00';
        }
        if (tmpStr.indexOf('.') == (tmpStr.length - 2)) {
            s += '0';
        }

        return tmpStr;
    };

})(BNN.Controls.DynamicStockQuotes, jQuery);

