
/*
FILE CONCAT ADD FILE
PATH: /ft/resources/client/modules/markets/sectorsAndIndustries/SandI_Chart.js
*/
var SandI_Chart = function() {
}

SandI_Chart.prototype.BUFFER_URL = '/ft/resources/buffer/sectorsAndIndustries/getSandIChart.asp'

SandI_Chart.prototype.init = function() {
    this.chartHolder = WSDOM.Element.parseSelector('div.chartHolder', 'wsod', 'first')
    WSDOM.Events.add(Element.parseSelector('select.chartParams', 'wsod'), 'change', this.initBuffer, this);
}

SandI_Chart.prototype.initBuffer = function(e, el) {
    e.cancel();
    
    if (el.value == "none") { return; };

    var cb = this.getContentBuffer(),
        currCompany = WSDOM.Element.parseSelector('label.compareLabel', 'wsod', 'first'),
        data = {};

    data.compare = WSDOM.Element.parseSelector('select.compare', 'wsod', 'first').value;
    data.timeframe = WSDOM.Element.parseSelector('select.timeframe', 'wsod', 'first').value;
    data.currWSODIssue = currCompany.getAttribute('currcompany');

    if (WSDOM.Element.hasClass(el, "compare")) {
        data.compare = el.value;
    } else if (WSDOM.Element.hasClass(el, "timeframe")) {
        data.timeframe = el.value;
    }

    this.loadingOverlay = new LoadingOverlay(this.chartHolder);
    this.loadingOverlay.showLoading();
    window.focus();

    cb.abortRequests();
    var conn = cb.load({
        debug: true,
        url: this.BUFFER_URL,
        method: "post",
        contentType: "text/javascript",
        preventEval: true,
        context: this,
        data: data,
        onload: this.bufferReturn
    });
}

SandI_Chart.prototype.bufferReturn = function(cb) {
    var oResults = new Serializer().deserialize(cb.getResult()),
        sSrc = oResults.src;

    this.img = new Image();
    this.img.src = sSrc;

    WSDOM.Events.add(this.img, 'load', this.loadImage, this);
}

SandI_Chart.prototype.loadImage = function() {
    var img = WSDOM.Element.parseSelector('img.chartImage', 'wsod', 'first');
        img.src = this.img.src;
        
    this.loadingOverlay.hideLoading();
}

SandI_Chart.prototype.getContentBuffer = function() {
    var cb = new ContentBuffer();

    this.getContentBuffer = function() {
        return cb;
    }

    return this.getContentBuffer();
}


/*
FILE CONCAT ADD FILE
PATH: /ft/resources/client/modules/markets/marketIndices.js
*/
var MarketIndices = function() {
}

MarketIndices.prototype.BUFFER_URL = SiteRules.getURL('/resources/buffer/markets/getMarketIndices.asp');

MarketIndices.prototype.init = function() {
    this._symbolArray = [];

    var chartHolder = WSDOM.Element.parseSelector('div.chartContainer', 'wsod', 'first');
    //var contentHolder = WSDOM.Element.parseSelector('div.contentHolder', 'wsod', 'first');

    this._chartLoadingOverlay = new LoadingOverlay(chartHolder);
    //this._contentLoadingOverlay = new LoadingOverlay(contentHolder);

    WSDOM.Events.add(WSDOM.Element.parseSelector('input.index', 'wsod'), 'click', this.addComparisons, this);
    //WSDOM.Events.add(WSDOM.Element.parseSelector('a.marketsType', 'wsod'), 'click', this.initBuffer, this);

    var elCheckBoxes = Element.parseSelector('input.index', 'wsod');

    for (var i = 0; i < elCheckBoxes.length; i++) {
        if (elCheckBoxes[i].checked) {
            this._symbolArray.push({ symbol: elCheckBoxes[i].value, element: elCheckBoxes[i], display: elCheckBoxes[i].getAttribute("display") })
        }
    }
}

MarketIndices.prototype.addComparisons = function(e, el) {
    var aSymbols = [];

    if (el.checked) {
        this._symbolArray.push({ symbol: el.value, element: el, display: el.getAttribute("display") })
    } else {
        for (var i = 0; i < this._symbolArray.length; i++) {
            if (el.value == this._symbolArray[i].symbol) {
                this._symbolArray.splice(i, 1);
                break;
            }
        }
    }

    if (this._symbolArray.length < 1) {
        this._symbolArray.push({ symbol: el.value, element: el, display: el.getAttribute("display") });
        el.checked = true;
        return;
    } else if (this._symbolArray.length > 4) {
        var oFirstBox = this._symbolArray.shift();
            oFirstBox.element.checked = false;
    }

    for (var j = 0; j < this._symbolArray.length; j++) {
        aSymbols.push(this._symbolArray[j].symbol);
    }
    
    var cb = this.getContentBuffer();
    this._chartLoadingOverlay.showLoading();

    cb.abortRequests();
    var conn = cb.load({
        debug: true,
        url: this.BUFFER_URL,
        method: "post",
        contentType: "text/javascript",
		preventEval: true,
        context: this,
        data: {
        type: 'chartOnly',
            comparisons: aSymbols
        },
        onload: this.comparisonReturn
    })
}

MarketIndices.prototype.comparisonReturn = function(cb) {
    var oResults = Common.getSerializer().deserialize(cb.getResult()),
        chartHolder = WSDOM.Element.parseSelector('div.chartHolder', 'wsod', 'first');

    this.img = new Image();
    this.img.src = oResults.oChart.fileName;
    this.oLineColors = Common.getSerializer().deserialize(oResults.oChart.lineColors);

    WSDOM.Events.add(this.img, 'load', this.loadImage, this);
}

MarketIndices.prototype.loadImage = function() {
    var img = WSDOM.Element.parseSelector('img.chartImage', 'wsod', 'first'),
        legendHolder = WSDOM.Element.parseSelector('div.chartLegend', 'wsod', 'first'),
        aHTML = [];

    img.src = this.img.src;


    for (var i=0, bgColor; i < this._symbolArray.length; i++) {
        bgColor = this.oLineColors[this._symbolArray[i].symbol];

        aHTML.push(
            '<div class="legendHolder">',
                '<div class="legendKey" style="background-color:#',bgColor,'"></div>',
                '<div class="legendDisplay">', this._symbolArray[i].display, '</div>',
            '</div>'
        )
    }

    WSDOM.Element.setHTML(legendHolder, aHTML.join(''))

    this._chartLoadingOverlay.hideLoading();
}

MarketIndices.prototype.getContentBuffer = function() {
    var cb = new ContentBuffer();

    this.getContentBuffer = function() {
        return cb;
    }

    return this.getContentBuffer();
}

/*
MarketIndices.prototype.initBuffer = function(e, el) {
    if (WSDOM.Element.hasClass(el, 'selected')) {
        return;
    }

    var sType = el.getAttribute('type'),
        cb = this.getContentBuffer();

    WSDOM.Element.removeClass(WSDOM.Element.parseSelector('a.marketsType', 'wsod'), 'selected');
    WSDOM.Element.addClass(el, 'selected');

    this._contentLoadingOverlay.showLoading();

    cb.abortRequests();
    var conn = cb.load({
        debug: true,
        url: this.BUFFER_URL,
        method: "post",
        contentType: "text/html",
        context: this,
        data: {
            type: sType
        },
        onload: this.bufferReturn    
    })
}

MarketIndices.prototype.bufferReturn = function(cb) {
    var oResults = new Serializer().deserialize(cb.getResult()),
        contentHolder = WSDOM.Element.parseSelector('div.contentHolder', 'wsod', 'first');

    WSDOM.Element.setHTML(contentHolder, oResults);
    WSDOM.Events.add(WSDOM.Element.parseSelector('input.index', 'wsod'), 'click', this.addComparisons, this);
    
    this._contentLoadingOverlay.hideLoading();
}
*/


