﻿function flashReady(flashObj) {
    var objData = InsideViewModuleModel.dataObject.GetCurrencyPairStatistics
    InsideViewModuleModel.flashReady[flashObj] = true;
    if ($.isNull(objData))
        return;
    if (flashObj == 'pop') {
        //InsideViewModuleModel.flashReady['pop'] = false;
        updateInsideViewPopularity(true);
    }
    else if (flashObj == 'dir' && objData != null && objData.BuyPercent != null) {
        document.getElementById('inside_direction').updateDirection(objData.BuyPercent);

    }
    else if (flashObj == 'adv' && objData != null && objData.currentRate != null) {
        updateInsideViewStructureReady(objData.currentRate);
    }
}
/**
* 
* 
* Author: Oren Dar
* Description: The function $.toJSON() is defined in Json.js
*/
var logicengineTimer = null;
var InsideViewModuleModel = {
    InsideView: new logic('GetCurrencyPairStatistics', { "buy": $('#inside-view-curr-buy').attr('selectedValue'), "sell": $('#inside-view-curr-sell').attr('selectedValue'), "mcid": ivParams.mcid, "mdid": ivParams.mdid }, 120000),  // 2 minutes
    InsideViewPopularity: new logic('GetPopularityData', { "buy": $('#inside-view-curr-buy').attr('selectedValue'), "sell": $('#inside-view-curr-sell').attr('selectedValue'), "mcid": ivParams.mcid, "mdid": ivParams.mdid }, 120000),  // 2 minutes
    InsideViewCurrentRate: new logic('GetInsideViewCurrentRate', null, (UserLogin.isAuthenticated() ? 15 : 30) * 100),
    BaseData: new logic('GetTrading'),
    LastSource: null, ChangeCurr: false,
    portalId: 0, action: null, dataObject: { 'GetTrading': null, 'GetCurrencyPairStatistics': null, 'GetInsideViewCurrentRate': null }, buyCurr: 0, sellCurr: 0, newBuyCurr: null, newSellCurr: null,
    buyCurrency: null, sellCurrency: null, spread: 0, tradbtn: null,
    flashReady: { 'adv': false, 'dir': false, 'pop': false },
    setPair: function(buy, sell) {
        InsideViewModuleModel.buyCurrency = buy;
        InsideViewModuleModel.sellCurrency = sell;
        InsideViewModuleModel.InsideView.args = { "buy": InsideViewModuleModel.buyCurrency, "sell": InsideViewModuleModel.sellCurrency, "mcid": ivParams.mcid, "mdid": ivParams.mdid };
        InsideViewModuleModel.InsideView.data = null;
        InsideViewModuleModel.InsideViewPopularity.args = { "buy": InsideViewModuleModel.buyCurrency, "sell": InsideViewModuleModel.sellCurrency, "mcid": ivParams.mcid, "mdid": ivParams.mdid };
        InsideViewModuleModel.InsideViewPopularity.data = null;
        InsideViewModuleModel.InsideViewCurrentRate.args = { "buy": InsideViewModuleModel.buyCurrency, "sell": InsideViewModuleModel.sellCurrency };
        InsideViewModuleModel.InsideViewCurrentRate.data = null;
        InsideViewModuleModel.ChangeCurr = true;
        /*get rest of data*/
        //alert(this.InsideView);
        InsiderunRequest(this.InsideView);
        InsiderunRequest(this.InsideViewPopularity);
    },
    isVisible: function() {
        return ($('#grid-inside-view').is(':visible') == true);
    },
    swfIsAvailable: false,

    init: function() {
        InsideViewModuleModel.buyCurr = $('#inside-view-curr-buy');
        InsideViewModuleModel.sellCurr = $('#inside-view-curr-sell');
        $(".InsSmallbutton").click(InsideViewModuleModel.getTrade);
        logicremoteURL = ivParams.remoteURL;
        InsideViewModuleModel.BaseData.args = Site.PortalId;
        InsideViewModuleModel.BaseData.onUpdate.add(function() {
            InsideViewModuleModel.dataObject.GetTrading = InsideViewModuleModel.BaseData.data;
            InsideViewModuleModel.InitCurrencyComboBoxs();
        });
        InsiderunRequest(InsideViewModuleModel.BaseData);
        /***** InsideView  ****/
        InsideViewModuleModel.InsideView.onUpdate.add(InsideViewModuleModel.Update);
        InsideViewModuleModel.InsideView.onError.add(InsideViewModuleModel.Error);
        InsideViewModuleModel.InsideView.onReset.add(InsideViewModuleModel.Reset);
        /***** InsideViewPopularity ****/
        InsideViewModuleModel.InsideViewPopularity.onUpdate.add(InsideViewModuleModel.loadData);
        InsideViewModuleModel.InsideViewPopularity.onError.add(InsideViewModuleModel.Error);
        InsideViewModuleModel.InsideViewPopularity.onReset.add(InsideViewModuleModel.Reset);
        this.setPair(ivParams.defBuyCurr, ivParams.defSellCurr);
        InsideViewModuleModel.InsideViewCurrentRate.onUpdate.add(InsideViewModuleModel.UpdateCurr);
        InsideViewModuleModel.makePopularity();
        InsideViewModuleModel.makeDirection();
        InsideViewModuleModel.makeStructure();
        logicengineTimer = setInterval('InsiderunRequest()', 1000);
    },
    GetBuySellSets: function(model) {
        if (!model) var model = this;
        var currArr = []; var index = 0;
        var buyIndex = 0; var sellIndex = 0;
        var buyCurr = $.getUrlParam('buy').toUpperCase(); var sellCurr = $.getUrlParam('sell').toUpperCase();

        if (buyCurr == sellCurr || model.isRestrictedCP(buyCurr, sellCurr)) {
            if (model.Settings && model.Settings.data) {
                buyCurr = model.Settings.data.defBuy;
                sellCurr = model.Settings.data.defSell;
            }
            else {
                buyCurr = 'EUR';
                sellCurr = 'USD';
            }
        }

        for (var key in InsideViewModuleModel.dataObject.GetTrading.Currencies) {
            currArr.push([key, key]);
            if (key == buyCurr) buyIndex = index;
            if (key == sellCurr) sellIndex = index;
            index++;
        }

        return { 'buyCurr': buyCurr, 'buyIndex': buyIndex, 'sellIndex': sellIndex, 'sellCurr': sellCurr, 'currArr': currArr };
    },
    OpenMachine: function() {
        $._confirm(ivParams.allMsgs["confirm_title"], ivParams.allMsgs["confirm_message"],
                    function() { window.location.href = ivParams.joinUrl; },
                    function() { Site.OpenTradeWindow(InsideViewModuleModel.buyCurr.attr("selectedValue"), InsideViewModuleModel.sellCurr.attr("selectedValue")); },
                    ivParams.allMsgs["confirm_reg_btn"], ivParams.allMsgs["confirm_log_btn"], false);
    },
    InitCurrencyComboBoxs: function() {
        var currency = InsideViewModuleModel.GetBuySellSets(); //[['USD','USD'],['EUR','EUR'],['JPY','JPY'],['GBP','GBP'],['ILS','ILS'],['CHF','CHF']];
        var selBuyIndex = currency.buyIndex;
        var selSellIndex = currency.sellIndex;
        if (!UserLogin.isAuthenticated()) {
            for (var i = 0; i < currency.currArr.length; i++) {
                if (currency.currArr[i][0] == ivParams.defBuyCurr)
                    selBuyIndex = i;
                if (currency.currArr[i][0] == ivParams.defSellCurr)
                    selSellIndex = i;
            }
        }
        InsideViewModuleModel.buyCurr.render({ controlType: 'ComboBox', dataSource: currency.currArr, selectedIndex: selBuyIndex, startScrollAfterItem: 5, scrollStep: 18, onChange: InsideViewModuleModel.InitAll, visibleWidth: 78 });
        InsideViewModuleModel.sellCurr.render({ controlType: 'ComboBox', dataSource: currency.currArr, selectedIndex: selSellIndex, startScrollAfterItem: 5, scrollStep: 18, onChange: InsideViewModuleModel.InitAll, visibleWidth: 78 });
        //1 click trade
        if ((InsideViewModuleModel.newBuyCurr != null) && (InsideViewModuleModel.newSellCurr != null)) {
            vars.buyCurr.option({ selectedText: newBuyCurr });
            vars.sellCurr.option({ selectedText: newSellCurr });
            newBuyCurr = null;
            newSellCurr = null;
        }
        InsideViewModuleModel.InitAll();
    },
    UpdateBuySell: function() {
        if (!$.isNull(InsideViewModuleModel.dataObject) && !$.isNull(InsideViewModuleModel.dataObject.GetCurrencyPairStatistics)) {
            if ($.isNull(InsideViewModuleModel.dataObject.GetCurrencyPairStatistics["error"])) {
                if (InsideViewModuleModel.flashReady['dir'] == true && (document.getElementById('inside_direction') != null)) {
                    document.getElementById('inside_direction').updateDirection(InsideViewModuleModel.dataObject.GetCurrencyPairStatistics.BuyPercent);
                }
                if (InsideViewModuleModel.flashReady['adv'] == true && (document.getElementById('inside_structure') != null)) {
                    updateInsideViewStructure(InsideViewModuleModel.dataObject.GetCurrencyPairStatistics.currentRate);
                }
                if (InsideViewModuleModel.flashReady['pop'] == true && (document.getElementById('inside_popularity') != null))
                    updateInsideViewPopularity(true);
                var buyCurr = InsideViewModuleModel.buyCurr;
                var sellCurr = InsideViewModuleModel.sellCurr;
                var buy = buyCurr.attr("selectedValue");
                var sell = sellCurr.attr("selectedValue");
                var source = InsideViewModuleModel.LastSource;
                if (source && buy == sell) {
                    if (source.attr("prevValue") == buyCurr.attr("prevValue")) {
                        var prev = source.attr("prevValue");
                        buyCurr.option({ selectedText: sell });
                        sellCurr.option({ selectedText: prev });
                    }
                    else {
                        var prev = sellCurr.attr("prevValue");
                        sellCurr.option({ selectedText: buy });
                        buyCurr.option({ selectedText: prev });
                    }
                    buy = buyCurr.attr("selectedValue");
                    sell = sellCurr.attr("selectedValue");
                    InsideViewModuleModel.setPair(buy, sell);
                }
                $('#direction-buy-left').text(ivParams.allMsgs.lblbuy + ' ' + buy);
                $('#direction-buy-right').text(ivParams.allMsgs.lblbuy + ' ' + sell);
            }
        }
    },
    InitAll: function(index, key, value, source) {
        InsideViewModuleModel.LastSource = source;
        var buyCurr = InsideViewModuleModel.buyCurr;
        var sellCurr = InsideViewModuleModel.sellCurr;
        var buy = buyCurr.attr("selectedValue");
        var sell = sellCurr.attr("selectedValue");
        if (source && buy == sell) {
            if (source.attr("prevValue") == buyCurr.attr("prevValue")) {
                var prev = source.attr("prevValue");
                buyCurr.option({ selectedText: sell });
                sellCurr.option({ selectedText: prev });
            }
            else {
                var prev = sellCurr.attr("prevValue");
                sellCurr.option({ selectedText: buy });
                buyCurr.option({ selectedText: prev });
            }
            buy = buyCurr.attr("selectedValue");
            sell = sellCurr.attr("selectedValue");
            InsideViewModuleModel.setPair(buy, sell);
        }
        $('#direction-buy-left').text(ivParams.allMsgs.lblbuy + ' ' + buy);
        $('#direction-buy-right').text(ivParams.allMsgs.lblbuy + ' ' + sell);
        InsideViewModuleModel.setPair(buy, sell);
    },
    //_____ Init Inside View InsideViewModel ______
    Update: function() {
        var objData = InsideViewModuleModel.InsideView.data;
        InsideViewModuleModel.dataObject.GetInsideViewCurrentRate = objData;
        var currentRate = objData.currentRate; /*current rate*/
        updateInsideViewStructure(currentRate);
        if (InsideViewModuleModel.flashReady['adv'] == true && !(document.getElementById('inside_direction') == null) && InsideViewModuleModel.dataObject != null && InsideViewModuleModel.dataObject.GetCurrencyPairStatistics != null && InsideViewModuleModel.dataObject.BuyPercent != null) {
            document.getElementById('inside_direction').updateDirection(InsideViewModuleModel.dataObject.GetCurrencyPairStatistics.BuyPercent);
        }
        if (objData) {
            InsideViewModuleModel.loadData();
        }
    },
    UpdateCurr: function() {
        var objData = InsideViewModuleModel.InsideViewCurrentRate.data;
        InsideViewModuleModel.dataObject.GetInsideViewCurrentRate = objData;
        var currentRate = objData[0]; /*current rate*/
        if (InsideViewModuleModel.flashReady['adv'] == true && document.getElementById('inside_structure') != null) {
            updateInsideViewStructureReady(currentRate);
        }
        else {
            InsideViewModuleModel.makeStructure();
        }
        if (InsideViewModuleModel.flashReady['dir'] == true && (document.getElementById('inside_direction') != null) && (document.getElementById('inside_direction').updateDirection != null)) {
            document.getElementById('inside_direction').updateDirection(InsideViewModuleModel.dataObject.GetCurrencyPairStatistics.BuyPercent);
        }
        else {
            InsideViewModuleModel.makeDirection();
        }
    },
    Error: function() {
        var source = InsideViewModuleModel.LastSource;
        InsideViewModuleModel.flashReady['adv'] = false;
        InsideViewModuleModel.flashReady['pop'] = false;
        InsideViewModuleModel.flashReady['dir'] = false;
        $("#innerwrapper").hide();
        $("#insidenodata").show();
        if (Site.direction == 1) {
            $("#MdlWrapperStyle").removeClass('MdlWrapperStyleLTR').addClass("MdlNODATAWrapperStyleLTR");
        }
        else {
            $("#MdlWrapperStyle").removeClass('MdlWrapperStyleRTL').addClass("MdlNODATAWrapperStyleRTL");
        }
    },
    Reset: function() {
        InsideViewModuleModel.loadData();
    },
    loadData: function() {
        var dataObject = InsideViewModuleModel.InsideView.data;
        var dataObjectPopularity = InsideViewModuleModel.InsideViewPopularity.data;
        if (dataObject != null && (dataObjectPopularity != null && dataObjectPopularity.length > 0)) {
            $("#innerwrapper").show();
            $("#insidenodata").hide();
            InsideViewModuleModel.flashReady['adv'] = (document.getElementById('inside_structure') != null && document.getElementById("inside_structure").updateStructure != null); ;
            InsideViewModuleModel.flashReady['pop'] = (document.getElementById("inside_popularity") != null && document.getElementById("inside_popularity").init != null);
            if (Site.direction == 1) {
                $("#MdlWrapperStyle").addClass('MdlWrapperStyleLTR').removeClass("MdlNODATAWrapperStyleLTR");
            }
            else {
                $("#MdlWrapperStyle").addClass('MdlWrapperStyleRTL').removeClass("MdlNODATAWrapperStyleRTL");
            }
            InsideViewModuleModel.dataObject.GetCurrencyPairStatistics = dataObject;
            InsideViewModuleModel.UpdateBuySell();
        }
        else {
            //InsideViewModuleModel.Error();
        }
    },
    makePopularity: function() {
        var so = new SWFObject("../../App_Resources/ActiveX/EFPieChart.swf", "inside_popularity", "220", "220", "9.0.124.0", "#FFFFFF", "true");
        so.useExpressInstall(ivParams.expressInstallFlashUrl);
        so.addVariable('app.instanceID', 'pop');
        so.addVariable('app.debug', 'no');
        so.addVariable('slice.min.size', 2);
        so.addVariable('slice.colors', [0x31629c, 0xc5dd5e, 0x66b82e, 0x499449, 0x669900, 0x014b01]);
        so.addParam("wmode", "transparent");
        so.write("graf-popularity");
    },
    makeDirection: function() {
        var so1 = new SWFObject("../../App_Resources/ActiveX/insideview_direction.swf", "inside_direction", "214", "43", "9.0.124.0", "#FFFFFF", "true");
        so1.useExpressInstall("");
        //so1.useExpressInstall(ivParams.expressInstallFlashUrl);
        so1.addParam("scale", "noscale");
        so1.addParam("wmode", "transparent");
        so1.addParam('salign', 'lt');
        so1.write("graf-direction");
    },
    makeStructure: function() {
        var so3 = new SWFObject("../../App_Resources/ActiveX/insideview_structure.swf", "inside_structure", "214", "35", "9.0.124.0", "#FFFFFF", "true");
        so3.useExpressInstall("");
        //so3.useExpressInstall(ivParams.expressInstallFlashUrl);
        so3.addParam("scale", "noscale");
        so3.addParam("wmode", "transparent");
        so3.addParam('salign', 'lt');
        so3.write("graf-structure");
    },
    getTrade: function() {
        Site.OpenTradeWindow(InsideViewModuleModel.buyCurrency, InsideViewModuleModel.sellCurrency);
    }
};


function updateInsideViewPopularity(changeSet) {
    if (document.getElementById("inside_popularity") != null && document.getElementById("inside_popularity").init != null) {
        var arr = InsideViewModuleModel.InsideViewPopularity.data;
        var popularitycount = 0;
        if (!$.isNull(arr)) {
            var values = "[";
            for (var i = 0; i <= 4; i++) {
                if (!$.isNull(arr[i]) && parseFloat(arr[i].popularity) > 0.1) {
                    values += arr[i].popularity + ",";
                    popularitycount += parseFloat(arr[i].popularity);
                    $("#popularityCell" + (i + 1)).show();
                    $("#popularityCell" + (i + 1)).text(arr[i].base + "/" + arr[i].noneBase);
                } else {
                    $("#popularityCell" + (i + 1)).hide();
                }
            }
            $("#popularityCell6").text(ivParams.allMsgs['CurrOther']);
            var fltOther = parseFloat((parseFloat(10000) - parseFloat(popularitycount.toFixed(2) * 100)) / 100);
            if (fltOther > 0) {
                $("#popularityCell6").show();
                values += parseFloat((parseFloat(10000) - parseFloat(popularitycount.toFixed(2) * 100)) / 100) + "]";
            }
            else {
                $("#popularityCell6").hide();
                values = values.substr(0, values.length - 1) + "]";
            }
            if (changeSet) {
                document.getElementById("inside_popularity").init(InsideViewModuleModel.buyCurrency + "/" + InsideViewModuleModel.sellCurrency, eval(values));
                InsideViewModuleModel.ChangeCurr = false;
            }
            document.getElementById('inside_popularity').update(eval(values));
        }
    }
}

function updateInsideViewStructure(curRateInsideView) {
    var objData = InsideViewModuleModel.dataObject.GetCurrencyPairStatistics;
    if (!objData) return;

    var AvgSLR = objData.AvgSLR > 0 ? '' + objData.AvgSLR : 'N/A';
    var AvgRate = objData.AvgRate > 0 ? '' + objData.AvgRate : 'N/A';
    var AvgTPR = objData.AvgTPR > 0 ? '' + objData.AvgTPR : 'N/A';
    $('#structure-averagerate-box').html("<span>" + AvgRate + "</span>");
    if (objData.Dir == 'left') {
        $('#structure-stop-loss').text(ivParams.allMsgs['psn_inVw_str_sl']);
        $('#structure-profit').text(ivParams.allMsgs['psn_inVw_str_prf']);
        $('#structure-stoploss-box').removeClass('structure-profit-box-color').addClass('structure-stop-loss-box-color').html("<span>" + AvgSLR + "</span>");
        $('#structure-takeprofit-box').removeClass('structure-stop-loss-box-color').addClass('structure-profit-box-color').html("<span>" + AvgTPR + "</span>");
        $(".structure-context-field .cell").addClass('InsideLeft').removeClass('InsideRight')
    }
    else {
        $('#structure-profit').text(ivParams.allMsgs['psn_inVw_str_sl']);
        $('#structure-stop-loss').text(ivParams.allMsgs['psn_inVw_str_prf']);
        $('#structure-takeprofit-box').removeClass('structure-profit-box-color').addClass('structure-stop-loss-box-color').html("<span>" + AvgSLR + "</span>");
        $('#structure-stoploss-box').removeClass('structure-stop-loss-box-color').addClass('structure-profit-box-color').html("<span>" + AvgTPR + "</span>");
        $(".structure-context-field .cell").addClass('InsideRight').removeClass('InsideLeft')
    }
    if (InsideViewModuleModel.flashReady['adv'] == true && (document.getElementById('inside_structure') != null))
        InsideViewModuleModel.makeStructure();
}

function updateInsideViewStructureReady(curRateInsideView) {
    var objData = InsideViewModuleModel.dataObject.GetCurrencyPairStatistics;
    if (!objData) return;
    var elem = document.getElementById('inside_structure');
    if (elem && elem.updateStructure) {
        var AvgSLR = objData.AvgSLR > 0 ? '' + objData.AvgSLR : 'N/A';
        var AvgRate = objData.AvgRate > 0 ? '' + objData.AvgRate : 'N/A';
        var AvgTPR = objData.AvgTPR > 0 ? '' + objData.AvgTPR : 'N/A';
        /*save the current structure data*/
        InsideViewModuleModel.dataObject.GetCurrencyPairStatistics.currentRate = curRateInsideView;
        /*update flash*/
        elem.updateStructure(curRateInsideView, AvgSLR, AvgRate, AvgTPR, objData.Dir);
        //alert("AvgSLR = " + AvgSLR + "\r\nAvgRate " + AvgRate + "\r\nAvgTPR " + AvgTPR + "\r\nDir " + objData.Dir);
    }
}

function InsiderunRequest(obj) {
    if (obj) logicnextRequest.push(obj);
    var req = new logicrequest();
    req.run();
}

function InsidestopEngine() {
    clearInterval(logicengineTimer);
}