Ext.ns('DJIndexes.InvestableProducts');

DJIndexes.InvestableProducts.renderer = {
	decimal: function(val) {
		return Ext.util.Format.number(val,'0.00');
	},
	
	change: function(val) {
		var v = Ext.util.Format.undef(val);
		var f = Ext.util.Format.number(v,'0.00');
		if (v>0) {
			return '<span style="color:#009900;">' + f + '</span>';
		} else if (v<0) {
			return '<span style="color:#bb0000;">' + f + '</span>';
		} else {
			return f;
		}
		return val;
	}
}

DJIndexes.InvestableProducts.Notice = function(){
    var NoticeDialog = new Ext.Window({
        title: 'Notice',
        modal: true,
        width: 430,
        height: 300,
        shadow: true,
        closeAction: 'hide',
        contentEl: 'notice-text',
        autoScroll: true,
        buttons: [{
            text: 'Close',
            handler: function(){
                NoticeDialog.hide();
            }
        }]
    });
    var LoginDialog = new Ext.Window({
        //title: 'Login',
        modal: true,
        width: 400,
        height: 200,
        shadow: true,
        closeAction: 'hide',
        contentEl: 'login-required',
        autoScroll: true,
        buttons: [{
            text: 'Close',
            handler: function(){
                LoginDialog.hide();
            }
        }]
    });
    var handleNoticeClick = function(e){
        e.preventDefault();
        NoticeDialog.show();
        NoticeDialog.center();
    };
    var handleLoginClick = function(e){
        e.preventDefault();
        LoginDialog.show();
        LoginDialog.center();
    };
    return {
        init: function(){
            Ext.select('.no-document').on('click', handleNoticeClick);
            Ext.select('.login-required').on('click', handleLoginClick);
        }
    }
}();
Ext.onReady(DJIndexes.InvestableProducts.Notice.init, DJIndexes.InvestableProducts.Notice);

DJIndexes.InvestableProducts.IntradayValues = function(){

    var getIntradayValues = function(ticker){
        var requestid = Ext.Ajax.request({
            method: 'post',
            url: '/DataService/v2/Intraday.cfc',
            params: {
                method: 'getIndexDetails',
                ticker: ticker,
                full: true
            },
            scope: this,
            disableCaching: true,
            success: handleResults
        });
    };
    
    function handleResults(response, options){
        var ticker = options.params.ticker;
        var items = Ext.decode(response.responseText);
        if (items.data.length > 0) {
            if (items.data[0].symbol == ticker) {
				
				Ext.get(ticker).toggleClass('collapsed');
				
				var nf1 = DJIndexes.InvestableProducts.renderer.decimal(items.data[0].price);
				var nf3 = DJIndexes.InvestableProducts.renderer.change(items.data[0].netchange);
				var nf4 = DJIndexes.InvestableProducts.renderer.change(items.data[0].percentagechange);
				var ticktime = items.data[0].ticktime;
				var tickdate = new Date();
				
				tickdate.setDate(items.data[0].ticktime.substring(8, 10));
				tickdate.setMonth(items.data[0].ticktime.substring(5, 7) - 1);
				tickdate.setFullYear(items.data[0].ticktime.substring(0, 4));
				tickdate.setHours(ticktime.substring(11, 13));
				tickdate.setMinutes(ticktime.substring(14, 16));
				tickdate.setSeconds(ticktime.substring(17, 19));
				
				Ext.getDom('price-' + ticker).innerHTML = nf1;
				Ext.getDom('time-' + ticker).innerHTML = tickdate.format('j-M h:i');
				Ext.getDom('netChg-' + ticker).innerHTML = nf3;
				Ext.getDom('netPctChg-' + ticker).innerHTML = nf4;
				
			} else {
				
				getIntradayValues(ticker);
			
			}
        }
    }
    
    return {
        init: function(){
        
            var indexesDiv = Ext.select('.intrdayvalues');
            Ext.each(indexesDiv.elements, function(item, index, allItems){
                getIntradayValues(item.id);
            }, this);
            
        }
    };
}();
Ext.onReady(DJIndexes.InvestableProducts.IntradayValues.init, DJIndexes.InvestableProducts.IntradayValues);
