﻿Type.registerNamespace('ActiveBets');

/*******************  ActiveBets.Single  ***********************/
ActiveBets.Single = function() {
    this.owner = null;
    this.params = { inputCss: 'text', details: 'bsDetails', combi: 'bsCombi', system: 'bsSystem', footer: 'bsFooter', system_alert: 'bsSystemAlert', alert: 'bsAlert' };

    this.details_table_body = null;
    this.combi_table_body = null;
    this.system_table_body = null;

    this.tabIndex = 500;
    this.ctabIndex = 600;
    this.stabIndex = 601;

    this._bett_slip = null;

    this._ctor$0.apply(this, arguments);
}
ActiveBets.Single.prototype = {
    _ctor$0: function() {
        if (arguments.length > 0) {
            this._bett_slip = arguments[0];
            if (arguments.length > 1)
                this.params.inputCss = arguments[1];
        }
    },

    get_app: function() {
        return ActiveBets.App;
    },

    get_bett_slip: function() {
        return this._bett_slip;
    },

    createElement: function(parent, name) {
        var elt = document.createElement(name);
        parent.appendChild(elt);
        return elt;
    },

    set_owner: function(_owner) {
        this.owner = _owner;

        this.create_details();
        this.create_combi();
        this.create_system();
        this.create_footer();
    },

    // region [ Single ]
    add_betrow: function(/* type = ActiveBets.Bet */oBet) {
        switch (oBet.OddKind) {
            case ActiveBets.OddKinds.LineOdd:
                this._add_line_betrow(oBet);
                break;
            case ActiveBets.OddKinds.CustomOdd:
                this._add_line_betrow(oBet);
                break;
            case ActiveBets.OddKinds.LongtermOdd:
                this._add_line_betrow(oBet);
                break;
        }
    },

    _add_line_betrow: function(/* type = ActiveBets.Bet */oBet) {
        var detailsTable = $get(String.format("{0}{1}", this.params.details, 'Table'));
        detailsTable.style.display = '';

        var tr = this.createElement(this.details_table_body, 'tr');
        oBet.set_row(tr);

        var td = $common.createElementFromTemplate({ nodeName: "td" }, tr);

        var table = $common.createElementFromTemplate({ nodeName: 'table',
            properties: { className: 'tabBet' }
        }, td);
        var tbody = this.createElement(table, 'tbody');

        var tr0 = this.createElement(tbody, 'tr');
        var tr1 = this.createElement(tbody, 'tr');
        var tr2 = this.createElement(tbody, 'tr');
        var tr3 = $common.createElementFromTemplate({ nodeName: 'tr',
            properties: { style: { display: 'none'} }
        }, tbody);

        oBet.set_tr_error(tr3);

        // Zero row
        var td0 = $common.createElementFromTemplate({ nodeName: "td",
            properties: { colSpan: 4 },
            cssClasses: ['tdSpacer']
        }, tr0);

        var img = $common.createElementFromTemplate({ nodeName: "img",
            properties: { src: "/App_Themes/Default/i/1x1.gif", width: 1, height: 1 }
        }, td0);

        // First row
        // CheckBox
        var td0 = $common.createElementFromTemplate({ nodeName: "td",
            cssClasses: ['tdCheckBet']
        }, tr1);
        var checkbox = $common.createElementFromTemplate({ nodeName: 'input',
            properties: { type: 'checkbox' },
            events: { 'click': Function.createDelegate(oBet, oBet.check_click) },
            cssClasses: ['checkBet']
        }, td0);
        //checkbox.disabled = oBet.OddKind == ActiveBets.OddKinds.LongtermOdd;
        checkbox.checked = !checkbox.disabled && oBet.IsSystemPart;
        oBet.set_cb_system(checkbox);

        // EventName
        var td1 = $common.createElementFromTemplate({ nodeName: "td",
            cssClasses: ['tdNameBet']
        }, tr1);
        td1.innerHTML = oBet.get_event_name();

        var td2 = $common.createElementFromTemplate({ nodeName: "td",
            cssClasses: ['tdCoefBet']
        }, tr1);
        td2.innerHTML = oBet.get_factor_desc();
        oBet.set_td_factor(td2);

        // TextBox
        var td3 = $common.createElementFromTemplate({ nodeName: "td",
            properties: { className: 'tdInpBet' }
        }, tr1);
        var tb_amount = $common.createElementFromTemplate({ nodeName: 'input',
            properties: { id: String.format('in_{0}_{1}', oBet.EventId, oBet.OddId), className: 'inpNumder', maxLength: 7, size: 3, value: String.localeFormat("{0:N}", oBet.Amount), tabIndex: this.tabIndex },
            events: {
                'blur': Function.createDelegate(oBet, oBet.tb_amount_blur),
                'focus': Function.createDelegate(oBet, oBet.tb_amount_focus),
                'keyup': Function.createDelegate(oBet, oBet.tb_amount_changed)
            }
        }, td3);
        oBet.set_tb_amount(tb_amount);

        // Second row
        // Delete Image
        var td0 = $common.createElementFromTemplate({ nodeName: 'td',
            cssClasses: ['tdImgBet']
        }, tr2);
        var a = $common.createElementFromTemplate({ nodeName: 'a',
            properties: { id: String.format('del_{0}_{1}', oBet.EventId, oBet.OddId), href: '#' },
            events: { 'click': Function.createDelegate(oBet, oBet.remove_click) }
        }, td0);
        $common.createElementFromTemplate({ nodeName: 'img',
            properties: { width: 11, height: 11, src: this.get_app().get_AppVirtualPath() + 'App_Themes/Default/i/icons/i-close.gif' }
        }, a);
        // Description
        var td1 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { colSpan: 1 },
            cssClasses: ['tdRemarkBet']
        }, tr2);
        td1.innerHTML = oBet.get_description();
        oBet.set_td_desc(td1);

        var td2 = $common.createElementFromTemplate({ nodeName: 'td',
            cssClasses: ['tdRemarkBetC']
        }, tr2);
        var checkbox = $common.createElementFromTemplate({ nodeName: 'input',
            properties: { type: 'checkbox', style: { display: this.get_bett_slip().get_banks_state() ? '' : 'none'} },
            events: { 'click': Function.createDelegate(oBet, oBet.bank_click) },
            cssClasses: ['checkBet']
        }, td2);
        //checkbox.disabled = oBet.OddKind == ActiveBets.OddKinds.LongtermOdd;
        checkbox.checked = !checkbox.disabled && oBet.IsBank;
        oBet.set_cb_bank(checkbox);

        var td3 = $common.createElementFromTemplate({ nodeName: 'td',
            cssClasses: ['tdRemarkBetC']
        }, tr2);
        oBet.set_td_limit(td3);

        // Third row
        var td0 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { colSpan: 4, style: { background: '#CD0000 none repeat scroll 0pt 0pt', color: '#FFFFFF'} },
            cssClasses: ['tdRemarkBet']
        }, tr3);
        oBet.set_td_error(td0);

        this.tabIndex++;
    },

    remove_betrow: function(/* type = ActiveBets.Bet */oBet) {
        this.details_table_body.deleteRow(oBet.get_row().rowIndex);
    },
    // endregion

    // region [ Combi ]
    create_combi: function() {
        var cmbiTable = $get(String.format('{0}{1}', this.params.combi, 'Table'));
        cmbiTable.style.display = 'none';

        this.combi_table_body = $get(String.format('{0}{1}', this.params.combi, 'Body'));
    },

    add_combirow: function(scBet) {
        var tr = this.createElement(this.combi_table_body, 'tr');
        scBet.set_row(tr);

        var td = this.createElement(tr, 'td');

        var table = $common.createElementFromTemplate({ nodeName: 'table',
            properties: { className: 'tabBet' }
        }, td);
        var tbody = this.createElement(table, 'tbody');

        var tr0 = this.createElement(tbody, 'tr');
        var tr1 = this.createElement(tbody, 'tr');
        var tr2 = this.createElement(tbody, 'tr');
        var tr3 = this.createElement(tbody, 'tr');

        scBet.set_tr_error(tr3);

        // Zero row
        var td0 = $common.createElementFromTemplate({ nodeName: "td",
            properties: { colSpan: 2 },
            cssClasses: ['tdSpacer']
        }, tr0);

        var img = $common.createElementFromTemplate({ nodeName: "img",
            properties: { src: "/App_Themes/Default/i/1x1.gif", width: 1, height: 1 }
        }, td0);

        // First row
        var td0 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { rowSpan: '2', className: 'tdNabeBetComb' }
        }, tr1);
        scBet.set_text_td(td0);

        var td1 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { className: 'tdInpBet' }
        }, tr1);
        var tb_amount = $common.createElementFromTemplate(
            { nodeName: 'input',
                properties: { className: 'inpNumder', maxLength: 7, size: 4, value: String.localeFormat('{0:N}', 0.00), tabIndex: this.ctabIndex },
                events: {
                    'blur': Function.createDelegate(scBet, scBet.tb_amount_blur),
                    'focus': Function.createDelegate(scBet, scBet.tb_amount_focus),
                    'keyup': Function.createDelegate(scBet, scBet.tb_amount_changed)
                }
            }, td1);
        scBet.set_tb_amount(tb_amount);

        // Second row
        var td0 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { className: 'tdRemarkBetC' }
        }, tr2);
        scBet.set_td_limit(td0);

        // Third row
        var td0 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { colSpan: 4, style: { background: '#CD0000 none repeat scroll 0pt 0pt', color: '#FFFFFF'} },
            cssClasses: ['tdRemarkBet']
        }, tr3);

        scBet.set_td_error(td0);
        scBet.ui_update();
    },

    update_combi: function(combi_data) {
        var cmbiTable = $get(String.format('{0}{1}', this.params.combi, 'Table'));
        cmbiTable.style.display = combi_data.isAvailable ? '' : 'none';
    },
    // endregion

    // region [ System ]
    add_sysbetrow: function(/*type of SSBet*/ssBet, index) {
        var tr = $get(String.format('{0}{1}', this.params.system, 'Table')).insertRow(index);
        //        var tr = this.createElement(this.system_table_body, 'tr');
        ssBet.set_row(tr);

        var td = this.createElement(tr, 'td');

        var table = $common.createElementFromTemplate({ nodeName: 'table',
            properties: { className: 'tabBet' }
        }, td);
        var tbody = this.createElement(table, 'tbody');

        var tr0 = this.createElement(tbody, 'tr');
        var tr1 = this.createElement(tbody, 'tr');
        var tr2 = this.createElement(tbody, 'tr');
        var tr3 = $common.createElementFromTemplate({ nodeName: 'tr',
            properties: { style: { display: 'none'} }
        }, tbody);

        ssBet.set_tr_error(tr3);

        // Zero row
        var td0 = $common.createElementFromTemplate({ nodeName: "td",
            properties: { colSpan: 4 },
            cssClasses: ['tdSpacer']
        }, tr0);

        var img = $common.createElementFromTemplate({ nodeName: "img",
            properties: { src: "/App_Themes/Default/i/1x1.gif", width: 1, height: 1 }
        }, td0);

        // Text
        var td0 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { className: 'tdNabeBetComb', rowSpan: 2 }
        }, tr1);
        ssBet.set_text_td(td0);
        // Price
        var td1 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { className: 'tdInpBet' }
        }, tr1);
        var tb_stake = $common.createElementFromTemplate({ nodeName: 'input',
            properties: { className: 'inpNumder', maxLength: 7, size: 4, value: String.localeFormat('{0:N}', ssBet.Stake), tabIndex: this.stabIndex },
            events: {
                'blur': Function.createDelegate(ssBet, ssBet.tb_stake_blur),
                'focus': Function.createDelegate(ssBet, ssBet.tb_stake_focus),
                'keyup': Function.createDelegate(ssBet, ssBet.tb_stake_changed)
            }
        }, td1);
        ssBet.set_tb_stake(tb_stake);

        this.stabIndex++;
        // =
        var td2 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { className: 'tdSimilarly' }
        }, tr1);
        td2.innerHTML = '=';
        // Sum
        var td3 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { className: 'tdInpBet' }
        }, tr1);
        var tb_amount = $common.createElementFromTemplate({ nodeName: 'input',
            properties: { className: 'inpNumder', maxLength: 7, size: 4, value: String.localeFormat('{0:N}', ssBet.Amount), tabIndex: this.stabIndex },
            events: {
                'blur': Function.createDelegate(ssBet, ssBet.tb_amount_blur),
                'focus': Function.createDelegate(ssBet, ssBet.tb_amount_focus),
                'keyup': Function.createDelegate(ssBet, ssBet.tb_amount_changed)
            }
        }, td3);
        ssBet.set_tb_amount(tb_amount);
        // Limits
        var td0 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { colSpan: 4, className: 'tdRemarkBetC' }
        }, tr2);
        ssBet.set_td_limit(td0);

        // Third row
        var td0 = $common.createElementFromTemplate({ nodeName: 'td',
            properties: { colSpan: 4, style: { background: '#CD0000 none repeat scroll 0pt 0pt', color: '#FFFFFF'} },
            cssClasses: ['tdRemarkBet']
        }, tr3);

        ssBet.set_td_error(td0);

        this.stabIndex++;
        ssBet.ui_update();
    },

    create_system: function() {
        var systemTable = $get(String.format("{0}{1}", this.params.system, 'Table'));
        systemTable.style.display = 'none';

        this.system_table_body = $get(String.format("{0}{1}", this.params.system, 'Body'));
    },

    update_system: function(system_data) {
        var systemTable = $get(String.format("{0}{1}", this.params.system, 'Table'));
        systemTable.style.display = system_data.isAvailable ? '' : 'none';
    },

    remove_sysbetrow: function(/*type of SSBet*/ssBet) {
        if (ssBet.get_system() == 1)
            this.combi_table_body.deleteRow(ssBet.get_row().rowIndex);
        else
            this.system_table_body.deleteRow(ssBet.get_row().rowIndex);
    },
    // endregion

    // region [ System Alert ]
    update_system_alert: function(is_system_alert) {
        var sysAlertTable = $get(String.format('{0}{1}', this.params.system_alert, 'Table'));
        sysAlertTable.style.display = is_system_alert ? '' : 'none';
    },

    update_alert: function(show_alert, message) {
        var alertTable = $get(String.format('{0}{1}', this.params.alert, 'Table'));

        if (show_alert) {
            alertTable.innerHTML = message;
            alertTable.style.display = '';
        }
        else
            alertTable.style.display = 'none';
    },
    // endregion

    // region [ Details ]
    create_details: function() { // 9 cells
        var detailsTable = $get(String.format("{0}{1}", this.params.details, 'Table'));
        detailsTable.style.display = 'none';

        this.details_table_body = $get(String.format("{0}{1}", this.params.details, 'Body'));
    },

    get_details_table: function() {
        var detailsTable = $get(String.format("{0}{1}", this.params.details, 'Table'));
        return detailsTable;
    },
    // endregion

    // region [ Footer ]
    create_footer: function(td) {
        this.footer_table_body = $get(String.format("{0}{1}", this.params.footer, 'Body'));
    },

    update_footer: function(footer_data) {
        $get('lblBetsCount').innerHTML = footer_data.count;
        $get('lblStakeAmount').innerHTML = String.localeFormat("{0:C}", footer_data.amount);
        $get('lblWinAmount').innerHTML = String.localeFormat("{0:C}", footer_data.win);
    }
    // endregion
}
ActiveBets.Single.registerClass("ActiveBets.Single");

Res={"OddNotExistsError":"Odd not exists.","FactorExceedError":"Odd factor exceeded.","NoLimit":"no lim","LimitError":"Limits: wrong stake","Bet":"Bet","Odd":"Odds","Bonus":"BONUS:","StandartExpress":"Standart express","EventRefundError":"Event refund.","WinExceedError":"Possible win exceeded.","FactorChangedError":"Factor changed.","EventBlockedError":"Event blocked.","EventStartedError":"Event started.","EventDateChangedError":"Event date changed.","Bets":"Bets"};
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();