• Файл: pages.tabs.js
  • Полный путь: https://files.multura.space/qiwi/interface_fake-osmp_v1.0.0/system/js/engine/pages.tabs.js
  • Дата изменения: 11/01/2012 2:02 AM
  • Размер файла: 54.59 KB
  • MIME-тип: text/plain
  • Кодировка: utf-8
 
Открыть Назад
	CTab = createClass
(
	CControl,
	{
	    ctor: function(oParent, sInstance, sCtrlPlace, sId) {
	        CTab.base.ctor.call(this, oParent, sInstance, sCtrlPlace);
	        this._sId = sId;
	    },

	    _paint: function() {

	    },

	    show: function(bShow) {
	        if (!$isNoU($(this._sPlace))) {
	            if ($bool(bShow)) {
	                with ($(this._sPlace).style) {
	                    display = "block";
	                }
	            }
	            else {
	                with ($(this._sPlace).style) {
	                    display = "none";
	                }
	            }
	        }
	    },

	    getId: function() {
	        return this._sId;
	    }
	}
);

	CButtonTab = createClass
(
    CTab,
    {
        ctor: function (oParent, sInstance, sCtrlPlace, sId, sTitle, aDispButton) {
            CButtonTab.base.ctor.call(this, oParent, sInstance, sCtrlPlace, sId);
            this._aDispButton = aDispButton;
            this._sTitle = sTitle;
        },

        _paint: function () {
            this._prepareTemplate();
        },

        _prepareTemplate: function () {
            var sContent = "";
            CInputTab.base._paint.apply(this, arguments);
            if (!$isNoU($(this._sPlace))) {
                for (var i = 0; i < this._aDispButton.length; i++) {
                    if (!$isNoU(this._aDispButton[i]["disp_name"]) || !$isNoU(this._aDispButton[i]["altName"])) {
                        sContent += ['<div id="', this._sInstance, "_e_", i, '" class="element-place">',
                	        '<div id="', this._sInstance, "_dispButton_", (i + 1), '"></div>', '</div>'].join('');
                    }
                }
                insertContent(this._sPlace, sContent);
                this._createButton();
            }
        },

        _createButton: function () {
            var oElement = null,
	            oPlace = null;

            for (var i = 0; i < this._aDispButton.length; i++) {
                var sType = "button",
	                sDispType = "",
	                sDispname = "",
	                sAltName = "",
	                sDispDesc = "",
	                sName = "",
	                sValue = "",
	                sPageId = "",
	                aExtra = [];

                if (!$isNoU(this._aDispButton[i]["__objects"]))
                    aExtra = this._aDispButton[i]["__objects"];

                if (this._aDispButton[i].type == "disp_button")
                    sType = "disp_button";

                if (!$isNoU(this._aDispButton[i].disp_type))
                    sDispType = this._aDispButton[i].disp_type;

                if (!$isNoU(this._aDispButton[i].name))
                    sName = this._aDispButton[i].name;

                if (!$isNoU(this._aDispButton[i].disp_desc))
                    sDispDesc = this._aDispButton[i].disp_desc;

                if (!$isNoU(this._aDispButton[i].pageId))
                    sPageId = this._aDispButton[i].pageId;

                if (sType == "button")
                    sValue = this._aDispButton[i].altName;
                else
                    sValue = $(this._aDispButton[i].disp_name).value;

                oPlace = $(this._sInstance + "_dispButton_" + (i + 1));
                if (sValue.length) {
                    if (oPlace) {
                        oElement = new CDispButton(this, "el" + (i + 1), oPlace.id, sValue, sDispType, sDispDesc, sName, sPageId, aExtra);
                        oElement.attachListener("onClick", $delegate(this, this._elementClick));
                        oElement.render();
                    }
                }
                else {
                    if (oPlace) {
                        oPlace.parentNode.style.display = "none";
                    }
                }
            }
        },

        _elementClick: function (sender, eargs) {
            for (var i = 0; i < eargs.extras.length; i++) {
                this._oParent._oPostData[eargs.extras[i].name] = eargs.extras[i].value;
            }
            if (eargs.type.indexOf('fixedsum') != -1)
                this._oParent._oPostData["_extra_fixed_int_summ"] = eargs.value;
            if (eargs.type.indexOf('minsum') != -1)
                this._oParent._oPostData["komissiya"] = eargs.value;
            if (eargs.type.indexOf('receipt') != -1)
                this._oParent._oPostData["_receipt_" + eargs.desc] = eargs.value;
            if (eargs.type.indexOf('extra') != -1)
                this._oParent._oPostData["_extra_" + eargs.extraName] = eargs.value;
            var eventArgs = {};
            eventArgs.id = eargs.id;
            this.notify("onClick", eventArgs);
        }
    }
);


    CDispInputTab = createClass
(
    CTab,
    {
        ctor: function (oParent, sInstance, sCtrlPlace, sId, aFields, sFieldType) {
            CDispInputTab.base.ctor.call(this, oParent, sInstance, sCtrlPlace, sId);
            this._aFields = this._getFields(aFields);
            this._aFldObjects = [];
            this._sFieldType = sFieldType;
            if (!this._aFields.length) {
                document.location.href = "./index.html";
            }
        },

        _paint: function () {
            this._prepareTemplate();
            this._renderFields(this._sInstance + "_fields_place");
            this._fieldAddValue();
        },

        _isValidField: function (oField) {
            if (!$isNoU(oField)) {
                if (!$isNoU(oField["name"]) && oField["name"].is(String) && oField["name"].length) {
                    if (!$isNoU(oField["mask"]) && oField["mask"].is(String) && oField["mask"].length) {
                        return true;
                    }
                }
            }
            return false;
        },

        _getFields: function (aFields) {
            var aResult = [];
            if (!$isNoU(aFields) && aFields.length) {
                for (var i = 0; i < aFields.length; i++) {
                    if (this._isValidField(aFields[i])) {
                        aResult.push(aFields[i]);
                    }
                }
            }
            return aResult;
        },

        _renderFields: function (sPlace) {
            var sContent = "";
            var oFld = null;
            var bVisible = true;
            var k = 0;
            while (k < this._aFields.length) {
                if (!$isNoU(this._aFields[k]["disp_name"]) && $(this._aFields[k]["disp_name"]).value.length == 0) {
                    this._aFields[k]["visible"] = "false";
                }
                if (!$isNoU(this._aFields[k]["visible"]) && this._aFields[k]["visible"] == "false") {
                    this.addPostParam(this._aFields[k]);
                    this._aFields.splice(k, 1);
                }
                k++;
            }
            for (var i = 0; i < this._aFields.length; i++) {
                sContent +=
                    '<div>' +
                    '  <table cellpadding="0" cellspacing="0" border="0">' +
                    '    <tr>' +
                    '     <td id="' + (this._sInstance + '_fld_' + this._aFields[i]["name"] + "_place") + '" valign="top"></td>';
                    '    </tr>';
                if (!$isNoU(this._aFields[i]["footer"]) && this._aFields[i]["footer"] != " ") {
                    sContent +=
	                    '<tr><td style="height: 10px;">&nbsp;</td></tr>';
                }
                sContent +=
	                '  </table>' +
                    '</div>';
            }
            insertContent(sPlace, sContent);
            for (var i = 0; i < this._aFields.length; i++) {
                oFld = new CDIField(this, ('_fld_' + this._aFields[i]["name"]),
                                        (this._sInstance + '_fld_' + this._aFields[i]["name"] + "_place"),
                                        this._aFields[i], this._sFieldType);

                oFld.attachListener("onValid", $delegate(this, this._onFieldValid));
                this._aFldObjects.push(oFld);
                oFld.render();
                if (i == 0) {
                    oFld.setActive(true);
                }
            }
        },

        _prepareTemplate: function () {
            var sContent = "";
            CInputTab.base._paint.apply(this, arguments);
            if (!$isNoU($(this._sPlace))) {
                sContent +=
	                '<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">' +
	                '  <tr>' +
	                '    <td style="width: 100%; height: 100%" align="center" valign="middle">' +
	                '      <table cellpadding="0" cellspacing="0" border="0">' +
	                '        <tr>' +
	                '          <td id="' + this._sInstance + '_fields_place" align="center" valign="top"></td>' +
	                '        </tr>' +
	                '      </table>' +
	                '    </td>' +
	                '  </tr>' +
	                '</table>';
                insertContent(this._sPlace, sContent);
            }
        },

        _onFieldValid: function (sender, eargs) {
            if (eargs.isValid) {
                this.notify("onStateChange", { isValid: true });
            }
            else {
                this.notify("onStateChange", { isValid: false });
            }
        },

        getFields: function () {
            return this._aFldObjects;
        },

        addPostParam: function (aField) {
            if (!$isNoU(aField.disp_type)) {

                var dispValue = $(aField.disp_name).value;
                var dispType = aField.disp_type;

                if (dispType.indexOf('fixedsum') != -1)
                    this._oParent._oPostData["_extra_fixed_int_summ"] = dispValue;
                if (dispType.indexOf('minsum') != -1) {
                    var fMinSumm = parseFloat(dispValue);
                    var iMinSumm = parseInt(dispValue);
                    var sMinSumm = '';
                    if ((fMinSumm - iMinSumm) > 0)
                        iMinSumm += 1;
                    sMinSumm = iMinSumm.toString();

                    this._oParent._oPostData["komissiya"] = sMinSumm;
                }
                if (dispType.indexOf('extra') != -1)
                    this._oParent._oPostData["_extra_" + aField.name] = dispValue;
                if (dispType.indexOf('receipt') != -1)
                    if (!$isNoU(aField.disp_desc))
                        this._oParent._oPostData["_receipt_" + aField.disp_desc] = dispValue;
                    else
                        this._oParent._oPostData["_receipt_"] = dispValue;
            }
        },

        _fieldAddValue: function () {
            for (var i = 0; i < this._aFldObjects.length; i++) {
                this._aFldObjects[i].setActive(true);
                this._aFldObjects[i].processValue(($(this._aFields[i].disp_name).value.length > 100) ? $(this._aFields[i].disp_name).value.substr(0, 99) : $(this._aFields[i].disp_name).value);
                this.addPostParam(this._aFields[i]);
            }
        }
    }
);

    CDispCombined = createClass
(
    CTab,
    {
        ctor: function (oParent, sInstance, sCtrlPlace, sId, aCombined) {
            CDispCombined.base.ctor.call(this, oParent, sInstance, sCtrlPlace, sId);
            this._aDispButton = [];
            this._aFld = [];
            this._aDispCombined = aCombined;
            for (var i = 0; i < aCombined.length; i++) {
                if (aCombined[i].type == 'disp_button' || aCombined[i].type == 'button')
                    this._aDispButton.push(aCombined[i]);
                if (aCombined[i].type == 'disp_input')
                    this._aFld.push(aCombined[i]);
            }
            this._aFields = this._getFields(this._aFld);
            this._aFldObjects = [];
        },
        
        _paint: function() {
	        this._prepareTemplate();
	        this._renderFields(this._sInstance + "_fields_place");
	        this._fieldAddValue();
	    },
        
        _isValidField: function(oField) {
	        if (!$isNoU(oField)) {
	            if (!$isNoU(oField["name"]) && oField["name"].is(String) && oField["name"].length) {
	                if (!$isNoU(oField["mask"]) && oField["mask"].is(String) && oField["mask"].length) {
	                    return true;
	                }
	            }
	        }
	        return false;
	    },
        
        _getFields: function(aFields) {
	        var aResult = [];
	        if (!$isNoU(aFields) && aFields.length) {
	            for (var i = 0; i < aFields.length; i++) {
	                if (this._isValidField(aFields[i])) {
	                    aResult.push(aFields[i]);
	                }
	            }
	        }
	        return aResult;
	    },
	    
	    _renderFields: function(sPlace) {
	        var sContent = "";
	        var nDisp = 0;
	        var nButton = 0;
	        
	        sContent += 
	                '<div style="margin-top: 20px;">' +
                    '  <table cellpadding="0" cellspacing="0" border="0">' +
                    '    <tr>' +
                    '       <td>';
	        for (var i = 0; i < this._aDispCombined.length; i++) {
	            if ((!$isNoU(this._aDispCombined[i]["disp_name"]) && $(this._aDispCombined[i].disp_name).value.length != 0) || 
	                (!$isNoU(this._aDispCombined[i]["altName"]) && this._aDispCombined[i].altName.length != 0)) {
                    if (this._aDispCombined[i].type == 'disp_button' || this._aDispCombined[i].type == 'button') {
                        sContent += 
                        '<table cellpadding="0" cellspacing="0" border="0">' +
                        '<tr>' +
                        '   <td align="left" valign="middle" width="301" height="121">' +
                        '       <div id="' + this._sInstance + '_e_' + nButton + '" class="element-place">' +
                	    '           <div id="' + this._sInstance + '_dispButton_' + (nButton + 1) + '"></div>' + 
                	    '       </div>' +
                        '   </td>';
                        if (this._aDispCombined[i + 1] == 'disp_input' && !$isNoU(this._aDispCombined[i + 1]["nobr"]) && this._aDispCombined[i + 1]["nobr"] == 'false')
                            sContent += '</tr></table>';
                        nButton++;
                    }
                    if (this._aDispCombined[i].type == 'disp_input') {
                        if (!$isNoU(this._aFields[nDisp]["nobr"]) && this._aFields[nDisp]["nobr"] == 'true')
                            sContent += '<table cellpadding="0" cellspacing="0" border="0"><tr>';
                        sContent +=
                            '<td>' +
                            '   <div>' +
                            '     <table cellpadding="0" cellspacing="0" border="0">' +
                            '       <tr>' +
                            '         <td id="' + (this._sInstance + '_fld_' + this._aFields[nDisp]["name"] + "_place") + '" valign="top"></td><td style="width: 10px;"></td>' +
                            '       </tr>' +
                            '       <tr><td style="height: 30px;">&nbsp;</td></tr>' +
                            '     </table>' +
                            '   </div>' +
                            '</td>' +
                            '</tr>' +
                            '</table>';
                        nDisp++;
                    }       
	            }
	        }
	        sContent +=
                '  </tr>' +
                ' </table>' +
                '</div>';
	        insertContent(sPlace, sContent);
	        
	        this._createField();
	        this._createButton();
	    },
	    
	    _createField: function () {
	        var oFld = null;
    	    for (var i = 0; i < this._aFields.length; i++) {
    	        var type = "long";
    	        if ($(this._aFields[i]["disp_name"]).value.length != 0) {
    	            if (!$isNoU(this._aFields[i]["nobr"]) && this._aFields[i]["nobr"] == "false")
    	                type = "short";
                    oFld = new CDIField(this, ('_fld_' + this._aFields[i]["name"]), (this._sInstance + '_fld_' + this._aFields[i]["name"] + "_place"), this._aFields[i], type);
                    oFld.attachListener("onValid", $delegate(this, this._onFieldValid));
                    this._aFldObjects.push(oFld);
                    oFld.render();
                    if (i == 0) {
                        oFld.setActive(true);
                    }
	            }
	        }
	    },
	    
	    _createButton: function () {
	        var oElement = null,
	            oPlace = null;
	            
	        for (var i = 0; i < this._aDispButton.length; i++) {
	            var sType = "button",
	                sDispType = "",
	                sDispname = "",
	                sAltName = "",
	                sDispDesc = "",
	                sName = "",
	                sValue = "",
	                sPageId = "",
	                aExtra = [];
	            
	            if (!$isNoU(this._aDispButton[i]["__objects"]))
	                aExtra = this._aDispButton[i]["__objects"];
	            
	            if(this._aDispButton[i].type == "disp_button")
	                sType = "disp_button";
	                
	            if (!$isNoU(this._aDispButton[i].disp_type))
	                sDispType = this._aDispButton[i].disp_type;
	                
	            if (!$isNoU(this._aDispButton[i].name))
	                sName = this._aDispButton[i].name;
	                
	            if (!$isNoU(this._aDispButton[i].disp_desc))
	                sDispDesc = this._aDispButton[i].disp_desc;
	                
	            if (!$isNoU(this._aDispButton[i].pageId))
	                sPageId = this._aDispButton[i].pageId;
	                
	            if (sType == "button")
	                sValue = this._aDispButton[i].altName;
	            else
	                sValue = $(this._aDispButton[i].disp_name).value;
	            
	            oPlace = $(this._sInstance + "_dispButton_" + (i + 1));
	            if (oPlace) {
	                oElement = new CDispButton(this, "el" + (i + 1), oPlace.id, sValue, sDispType, sDispDesc, sName, sPageId, aExtra);
                    oElement.attachListener("onClick", $delegate(this, this._elementClick));
                    oElement.render();
                }
	        }
	    },
	    
	    _prepareTemplate: function () {
	        var sContent = "";
	        CInputTab.base._paint.apply(this, arguments);
	        if (!$isNoU($(this._sPlace))) {
	            sContent +=
	                '<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">' +
	                '  <tr>' +
	                '    <td style="width: 100%; height: 100%" align="center" valign="middle">' +
	                '      <table cellpadding="0" cellspacing="0" border="0">' +
	                '        <tr>' +
	                '          <td id="' + this._sInstance + '_fields_place" align="center" valign="top"></td>' +
	                '        </tr>' +
	                '      </table>' +
	                '    </td>' +
	                '  </tr>' +
	                '</table>';
	            insertContent(this._sPlace, sContent);
	        }
	    },
	    
	    _onFieldValid: function(sender, eargs) {
	        if (eargs.isValid) {
	            this.notify("onStateChange", { isValid: true });
	        }
	        else {
	            this.notify("onStateChange", { isValid: false });
	        }
	    },
	    
	    getFields: function() {
	        return this._aFldObjects;
	    },
	    
	    _fieldAddValue: function () {
	        for (var i = 0; i < this._aFldObjects.length; i++) {
	            this._aFldObjects[i].setActive(true);
	            this._aFldObjects[i].processValue($(this._aFields[i].disp_name).value);
	            
	            if (!$isNoU(this._aFields[i].disp_type)) {
	                if (this._aFields[i].disp_type.indexOf('fixedsum') != -1)
	                    this._oParent._oPostData["_extra_fixed_int_summ"] = $(this._aFields[i].disp_name).value;
	                if (this._aFields[i].disp_type.indexOf('minsum') != -1)
	                    this._oParent._oPostData["komissiya"] = $(this._aFields[i].disp_name).value;
	                if (this._aFields[i].disp_type.indexOf('extra') != -1)
	                    this._oParent._oPostData[this._aFields[i].name] = $(this._aFields[i].disp_name).value;
	                if (this._aFields[i].disp_type.indexOf('receipt') != -1 && !$isNoU(this._aFields[i].disp_desc)) 
	                    this._oParent._oPostData["_receipt_" + this._aFields[i].disp_desc] = $(this._aFields[i].disp_name).value;
	            }
	        }
	    }, 
	    
	    _elementClick: function (sender, eargs) {
	        for (var i = 0; i < eargs.extras.length; i++) {
	            this._oParent._oPostData[eargs.extras[i].name] = eargs.extras[i].value;
	        }
	        if (eargs.type.indexOf('fixedsum') != -1)
	            this._oParent._oPostData["_extra_fixed_int_summ"] = eargs.value;
	        if (eargs.type.indexOf('minsum') != -1)
	            this._oParent._oPostData["komissiya"] = eargs.value;
	        if (eargs.type.indexOf('receipt') != -1)
	            this._oParent._oPostData["_receipt_" + eargs.desc] = eargs.value;
	        if (eargs.type.indexOf('extra') != -1)
	            this._oParent._oPostData["_extra_" + eargs.extraName] = eargs.value;
	        var eventArgs = {};
	        eventArgs.id = eargs.id;
	        this.notify("onClick", eventArgs);
	    }
    }
);





    CInputTab = createClass
(
	CTab,
	{
	    ctor: function (oParent, sInstance, sCtrlPlace, sId, sPrvName, sLogo, sKbType, aFields) {
	        CInputTab.base.ctor.call(this, oParent, sInstance, sCtrlPlace, sId);
	        this._aFields = this._getFields(aFields);
	        if (!this._aFields.length) {
	            // log start
	            _log('<e t="1"></e>');
	            _log('</p>');
	            // log stop
	            document.location.href = "./index.html";
	        }
	        this._nCurrentField = 0;
	        this._aFldObjects = [];
	        this._sKbType = "AL";
	        this._bShift = false;
	        this._bCapsLock = false;
	        if (this._isValidKb(sKbType)) {
	            this._sKbType = sKbType;
	        }
	        this._sPrvName = "";
	        if (!$isNoU(sPrvName) && sPrvName.is(String)) {
	            this._sPrvName = sPrvName;
	        }
	        this._sLogo = "";
	        if (!$isNoU(sLogo) && sLogo.is(String)) {
	            this._sLogo = sLogo;
	        }
	        this._oKeyboard = null;
	    },

	    _isValidKb: function (sKbType) {
	        return (sKbType == "AL" ||
	                sKbType == "ALC" ||
	                sKbType == "ALR" ||
	                sKbType == "ALCR" ||
	                sKbType == "DG" ||
	                sKbType == "DGD" ||
	                sKbType == "DGT" ||
	                sKbType == "DGDT");
	    },

	    _isValidField: function (oField) {
	        if (!$isNoU(oField)) {
	            if (!$isNoU(oField["name"]) && oField["name"].is(String) && oField["name"].length) {
	                if (!$isNoU(oField["mask"]) && oField["mask"].is(String) && oField["mask"].length) {
	                    return true;
	                }
	            }
	        }
	        return false;
	    },

	    _getFields: function (aFields) {
	        var aResult = [];
	        if (!$isNoU(aFields) && aFields.length) {
	            for (var i = 0; i < aFields.length; i++) {
	                if (this._isValidField(aFields[i])) {
	                    aResult.push(aFields[i]);
	                }
	            }
	        }
	        return aResult;
	    },

	    _prepareTemplate: function () {
	        var sContent = "";
	        CInputTab.base._paint.apply(this, arguments);
	        if (!$isNoU($(this._sPlace))) {
	            sContent +=
                    '<div id="' + this._sInstance + '_fields_place"></div>' +
                    '<div id="' + this._sInstance + '_kb_place" style="width: 100%; height: 200px;></div>';
	            insertContent(this._sPlace, sContent);
	        }
	    },

	    _paint: function () {
	        this._prepareTemplate();
	        this._renderFields(this._sInstance + "_fields_place");
	        this._renderKeyboard(this._sInstance + "_kb_place");
	    },

	    _renderFields: function (sPlace) {
	        var sContent = "";
	        var oFld = null;
	        var aFldTbl = [];
	        for (var i = 0; i < this._aFields.length; i++) {
	            if (!$bool(this._aFields[i]["nobr"])) {
	                aFldTbl.push([this._aFields[i]]);
	            }
	            else {
	                if (aFldTbl.length)
	                    aFldTbl.last().push(this._aFields[i]);
	                else
	                    aFldTbl.push([this._aFields[i]]);
	            }
	        }
	        for (var i = 0; i < aFldTbl.length; i++) {
	            sContent +=
                    '<div>' +
                    '  <table cellpadding="0" cellspacing="0" border="0">' +
                    '    <tr>';
	            for (var j = 0; j < aFldTbl[i].length; j++) {
	                sContent +=
                        '  <td id="' + (this._sInstance + '_fld_' + aFldTbl[i][j]["name"] + "_place") + '" valign="top"></td><td style="width: 10px;"></td>';
	            }
	            sContent +=
                    '    </tr>';
	            if (i < aFldTbl.length - 1) {
	                sContent +=
	                    '<tr><td style="height: 30px;">&nbsp;</td></tr>';
	            }
	            sContent +=
	                '  </table>' +
                    '</div>';
	        }
	        insertContent(sPlace, sContent);
	        for (var i = 0; i < this._aFields.length; i++) {
	            oFld = new CField(
	                this,
	                ('_fld_' + this._aFields[i]["name"]),
	                (this._sInstance + '_fld_' + this._aFields[i]["name"] + "_place"),
	                this._aFields[i]);
	            oFld.attachListener("onFieldFull",
	                $delegate(this, this._onFieldFull));
	            oFld.attachListener("onFieldEmpty",
	                $delegate(this, this._onFieldEmpty));
	            oFld.attachListener("onValid",
	                $delegate(this, this._onFieldValid));
	            oFld.attachListener("onClick",
	                $delegate(this, this._onFieldClick));
	            this._aFldObjects.push(oFld);
	            oFld.render();
	            if (i == 0) {
	                oFld.setActive(true);
	            }
	        }
	    },

	    _getFirstNoFullField: function () {
	        for (var i = 0; i < this._aFldObjects.length; i++) {
	            if (!this._aFldObjects[i].isFull()) {
	                return i;
	            }
	        }
	        return -1;
	    },

	    _getLengthFields: function () {
	        var aArr = [];
	        for (var i = 0; i < this._aFldObjects.length; i++) {
	            aArr[i] = this._aFldObjects[i].getValue();
	        }
	        return aArr;
	    },

	    _getLastNoEmptyField: function () {
	        for (var i = this._aFldObjects.length - 1; i >= 0; i--) {
	            if (!this._aFldObjects[i].isEmpty()) {
	                return i;
	            }
	        }
	        return -1;
	    },

	    _onFieldFull: function (sender, eargs) {
	        if (eargs.isFull) {
	            var nFld = this._getFirstNoFullField();
	            if (nFld > -1) {
	                this._aFldObjects[this._nCurrentField].setActive(false);
	                this._nCurrentField = nFld;
	                this._aFldObjects[this._nCurrentField].setActive(true);
	            }
	            else {
	                this._aFldObjects[this._nCurrentField].setActive(false);
	                this._nCurrentField = this._aFldObjects.length - 1;
	                this._aFldObjects[this._nCurrentField].setActive(true);
	            }
	        }
	    },

	    _onFieldEmpty: function (sender, eargs) {
	        if (eargs.isEmpty) {
	            var nFld = this._getLastNoEmptyField();
	            if (nFld > -1) {
	                this._aFldObjects[this._nCurrentField].setActive(false);
	                this._nCurrentField = nFld;
	                this._aFldObjects[this._nCurrentField].setActive(true);
	            }
	            else {
	                this._aFldObjects[this._nCurrentField].setActive(false);
	                this._nCurrentField = 0;
	                this._aFldObjects[this._nCurrentField].setActive(true);
	            }
	        }
	    },

	    _onFieldValid: function (sender, eargs) {
	        // log start
	        var sTemp = sender.getValue().replace(/</g, '(');
	        _log('<v v="' + sTemp + '"></v>');
	        // log stop
	        if (eargs.isValid && this.isValid()) {
	            this.notify("onStateChange", { isValid: true });
	        }
	        else {
	            this.notify("onStateChange", { isValid: false });
	        }
	    },

	    _onFieldClick: function (sender, eargs) {
	        var nFld = this._getFieldNumber(sender);
	        if (nFld > -1) {
	            this._nCurrentField = nFld;
	            for (var i = 0; i < this._aFldObjects.length; i++) {
	                if (i != nFld) {
	                    this._aFldObjects[i].setActive(false);
	                }
	            }
	        }
	    },


	    _renderKeyboard: function (sPlace) {
	        if (!$isNoU($(sPlace))) {
	            // log start
	            _log('<k t="' + this._sKbType + '"></k>');
	            // log stop
	            switch (this._sKbType) {
	                case "AL":
	                    this._oKeyboard = new CALKeyboard(this, "kb", sPlace);
	                    break;
	                case "ALR":
	                    this._oKeyboard = new CALKeyboard(this, "kb", sPlace, null, true);
	                    break;
	                case "ALC":
	                    this._oKeyboard = new CALKeyboard(this, "kb", sPlace, null, false, true);
	                    break;
	                case "ALCR":
	                    this._oKeyboard = new CALKeyboard(this, "kb", sPlace, null, true, true);
	                    break;
	                case "DG":
	                    this._oKeyboard = new CDigitalKeyboard(this, "kb", sPlace);
	                    break;
	                case "DGT":
	                    this._oKeyboard = new CDigitalKeyboardT(this, "kb", sPlace);
	                    break;
	                case "DGD":
	                    this._oKeyboard = new CDigitalKeyboardD(this, "kb", sPlace);
	                    break;
	                case "DGDT":
	                    this._oKeyboard = new CDigitalKeyboardDT(this, "kb", sPlace);
	                    break;
	                default:
	                    // log start
	                    _log('<e t="2"></e>');
	                    _log('</p>');
	                    // log stop
	                    document.location.href = "./index.html";
	                    return;
	            }
	            if (!$isNoU(this._oKeyboard)) {
	                this._oKeyboard.attachListener("onKeyPress", $delegate(this, this._kbKeyPressed));
	                this._oKeyboard.create();
	                this._oKeyboard.render();
	            }

	            attachPropertyChangeListener("BarcodeData", $delegate(this, this._prekbKeyPressed));
	        }
	    },

	    _getFieldNumber: function (oFld) {
	        for (var i = 0; i < this._aFldObjects.length; i++) {
	            if (this._aFldObjects[i] == oFld) {
	                return i;
	            }
	        }
	        return -1;
	    },

	    _changeField: function (sDirection) {
	        if (sDirection == "NEXT") {
	            if (this._nCurrentField >= 0 &&
	            this._nCurrentField < this._aFldObjects.length - 1) {
	                this._aFldObjects[this._nCurrentField].deactivate();
	                this._aFldObjects[this._nCurrentField + 1].activate("FIRST");
	                this._nCurrentField++;
	            }
	            else if (this._nCurrentField == this._aFldObjects.length - 1) {
	                var nNextFld = this._getFirstNoFullField();
	                if (nNextFld > -1) {
	                    if (this._nCurrentField != nNextFld) {
	                        this._aFldObjects[this._nCurrentField].deactivate();
	                        this._aFldObjects[nNextFld].activate("FIRST");
	                        this._nCurrentField = nNextFld;
	                    }
	                }
	            }
	        }
	        else if (sDirection == "PREVIOUS") {
	            if (this._nCurrentField > 0) {
	                this._aFldObjects[this._nCurrentField].deactivate();
	                this._aFldObjects[this._nCurrentField - 1].activate("LAST");
	                this._nCurrentField--;
	            }
	        }
	    },

	    _getLastValidField: function () {
	        for (var i = this._aFldObjects.length - 1; i >= 0; i--) {
	            if (this._aFldObjects[i].isValid()) {
	                return i;
	            }
	        }
	        return -1;
	    },

	    _fieldStatusChange: function (sender, eargs) {
	        if (eargs.isValid) {
	            if (sender.isFull()) {
	                this._changeField("NEXT");
	            }
	        }
	        else {
	            if (sender.isEmpty()) {
	                this._changeField("PREVIOUS");
	            }
	        }
	    },

	    _fieldSelected: function (sender, eargs) {
	        for (var i = 0; i < this._aFldObjects.length; i++) {
	            if (this._aFldObjects[i] != sender) {
	                this._aFldObjects[i].deactivate();
	            }
	        }
	        this._nCurrentField = this._getFieldNumber(sender);
	    },

	    _prekbKeyPressed: function (oEventInfo) {
	        // log start
	        _log('<b v="' + oEventInfo.srcElement.value + '"></b>');
	        // log stop
	        var aString = oEventInfo.srcElement.value.split(''),
	            o = { "key": "" };
	        while (aString.length) {
	            o.key = aString.shift();
	            if (o.key !== "\\")
	                this._kbKeyPressed(null, o);
	        }
	    },

	    _kbKeyPressed: function (sender, eargs) {
	        // log start
	        if (eargs.key == '<') {
	            _log('<c v="("></c>');
	        }
	        else {
	            _log('<c v="' + eargs.key + '"></c>');
	        }
	        // log stop
	        switch (eargs.key) {
	            case "CLEAR":
	                this._nCurrentField = 0;
	                this._aFldObjects = [];
	                this._renderFields(this._sInstance + "_fields_place");
	                break;
	            default:
	                this._aFldObjects[this._nCurrentField].processValue(eargs.key);
	                break;
	        }
	    },

	    getFields: function () {
	        return this._aFldObjects;
	    },

	    isValid: function () {
	        for (var i = 0; i < this._aFldObjects.length; i++) {
	            if (!this._aFldObjects[i].isValid()) {
	                return false;
	            }
	        }
	        return true;
	    }
	}
);

	CDGInputTab = createClass
(
	CInputTab,
	{
	    ctor: function (oParent, sInstance, sCtrlPlace, sId, sPrvName, sLogo, sKbType, aFields) {
	        CDGInputTab.base.ctor.call(this, oParent, sInstance, sCtrlPlace, sId, sPrvName, sLogo, sKbType, aFields);
	    },

	    _prepareTemplate: function () {
	        var sContent = "";
	        CInputTab.base._paint.apply(this, arguments);
	        
	        var providerElement;
	        if(this._sLogo.length)
	        {
	        	providerElement = '<div style="background-image: url(./img/ui_item/'+getFileName(this._sLogo)+')"></div>';
	        }
	        else
	        {
	        	providerElement = this._sPrvName;
	        }
	        
	        if (!$isNoU($(this._sPlace))) {
	            sContent +=
	                '<table cellpadding="0" cellspacing="0" border="0" width="1240" height="100%" style="position: relative; left: 20px">' +
	                '  <tr>' +
	                '    <td style="width: 100%;" align="center" valign="top">' +
	                '      <table cellpadding="0" cellspacing="0" border="0">' +
	                '        <tr>' +
	                '          <td align="left" valign="middle" width="310" height="100%">' +
	                '            <table cellpadding="0" cellspacing="0" border="0">' +
	                '              <tr>' +
	                '                <td align="center" valign="middle" class="provider-element">' +
	                			getProviderButton(this._sPrvName, getFileName(this._sLogo)) +
	                '                </td>' +
	                '              </tr>' +
	                '            </table>' +
	                '          </td>' +
	                '          <td id="' + this._sInstance + '_fields_place" align="center" valign="top"></td>' +
                    	'          <td valign="middle"><div id="' + this._sInstance + '_bs" style="width: 301px; height: 121px;"></div></td>' +
	                '        </tr>' +
	                '      </table>' +
	                '    </td>' +
	                '  </tr>' +
	                '  <tr>' +
	                '    <td id="' + this._sInstance + '_kb_place" align="center"></td>' +
	                '  </tr>' +
	                '</table>';
	            insertContent(this._sPlace, sContent);
	            cntrProviderButton();
	        }
	    },

	    _paint: function () {
	        CDGInputTab.base._paint.apply(this, arguments);
	        this._renderBS(this._sInstance + "_bs");
	    },

	    _renderBS: function (sPlace) {
	        var oBtn = new CImageButton(this, "bs_btn", sPlace, "BACKSPACE", "./img/ui/delbtn.gif");
	        oBtn.attachListener("onClick", $delegate(this, this._kbKeyPressed));
	        oBtn.render();
	    }
	}
);

	CALInputTab = createClass
(
	CInputTab,
	{
	    ctor: function(oParent, sInstance, sCtrlPlace, sId, sPrvName, sLogo, sKbType, aFields) {
	        CDGInputTab.base.ctor.call(this, oParent, sInstance, sCtrlPlace, sId, sPrvName, sLogo, sKbType, aFields);
	    },

	    _prepareTemplate: function() {
	        var sContent = "";
	        CInputTab.base._paint.apply(this, arguments);
	        if (!$isNoU($(this._sPlace))) {
			
	            sContent +=
	                '<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">' +
	                '  <tr>' +
	                '    <td style="width: 100%; height: 100%" align="center" valign="middle">' +
	                '      <table cellpadding="0" cellspacing="0" border="0" style="margin-bottom: 5px">' +
	                '        <tr>' +
	                '          <td align="left" valign="middle" width="310" height="100%">' +
	                '            <table cellpadding="0" cellspacing="0" border="0">' +
	                '              <tr>' +
	                '                <td align="center" valign="middle" class="provider-element">' +
	                			getProviderButton(this._sPrvName, getFileName(this._sLogo)) +
	                '                </td>' +
	                '              </tr>' +
	                '            </table>' +
	                '          </td>' +
	                '          <td id="' + this._sInstance + '_fields_place" align="center" valign="top" style="width: 630px;"></td>' +
                    '          <td valign="middle"><div id="' + this._sInstance + '_bs" style="width: 301px; height: 121px;"></div></td>' +
	                '        </tr>' +
	                '      </table>' +
	                '    </td>' +
	                '  </tr>' +
	                '  <tr>' +
	                '    <td id="' + this._sInstance + '_kb_place" align="center"></td>' +
	                '  </tr>' +
	                '</table>';
	            insertContent(this._sPlace, sContent);
	            cntrProviderButton();
	        }
	    },

	    _paint: function () {
	        CDGInputTab.base._paint.apply(this, arguments);
	        this._renderBS(this._sInstance + "_bs");
	    },

	    _renderBS: function (sPlace) {
	        var oBtn = new CImageButton(this, "bs_btn", sPlace, "BACKSPACE", "./img/ui/delbtn.gif");
	        oBtn.attachListener("onClick", $delegate(this, this._kbKeyPressed));
	        oBtn.render();
	    }
	}
);

    PSCInputTab = createClass
(
	CInputTab,
	{
	    ctor: function(oParent, sInstance, sCtrlPlace, sId, sPrvName, sLogo, sKbType, aFields) {
	        PSCInputTab.base.ctor.call(this, oParent, sInstance, sCtrlPlace, sId);
	        this._aFields = this._getFields(aFields);
	        if (!this._aFields.length) {
	            document.location.href = "./index.html";
	        }
	        this._nCurrentField = 0;
	        this._aFldObjects = [];
	        this._sKbType = "AL";
	        if (this._isValidKb(sKbType)) {
	            this._sKbType = sKbType;
	        }
	        this._sPrvName = "";
	        if (!$isNoU(sPrvName) && sPrvName.is(String)) {
	            this._sPrvName = sPrvName;
	        }
	        this._sLogo = "";
	        if (!$isNoU(sLogo) && sLogo.is(String)) {
	            this._sLogo = sLogo;
	        }
	        this._oKeyboard = null;
	    },
	    
	    _paint: function() {
	        PSCInputTab.base._paint.call(this);
	    },
	    
	    _getNextField: function(sender, eargs) {
            var nFld = this._getFieldNumber(sender);
            var nFldLast = this._aFldObjects.length - 1;
            var oFld = this._aFldObjects[nFld];
	        if (nFld == nFldLast) {
	            nFld = 0;
	            this._nCurrentField = nFld;
	            for (var i = 0; i < this._aFldObjects.length; i++) {
	                if (i != nFld) {
	                    this._aFldObjects[i].setActive(false);
	                }
	                else
	                    this._aFldObjects[i].setActive(true);
	            }
	        }
	        else if ((nFld == 0) || (oFld._aBlocks.length == 1)) {
	            nFld++;
	            this._nCurrentField = nFld;
	            for (var i = 0; i < this._aFldObjects.length; i++) {
	                if (i != nFld) {
	                    this._aFldObjects[i].setActive(false);
	                }
	                else
	                    this._aFldObjects[i].setActive(true);
	            }
	            
	        }
        },
	    
	    _renderFields: function(sPlace) {
	        var sContent = "";
	        var oFld = null;
	        var aFldTbl = [];
	        for (var i = 0; i < this._aFields.length; i++) {
	            if (!$bool(this._aFields[i]["nobr"])) {
	                aFldTbl.push([this._aFields[i]]);
	            }
	            else {
	                if (aFldTbl.length)
	                    aFldTbl.last().push(this._aFields[i]);
	                else
	                    aFldTbl.push([this._aFields[i]]);
	            }
	        }
	        for (var i = 0; i < aFldTbl.length; i++) {
	            sContent +=
                    '<div>' +
                    '  <table cellpadding="0" cellspacing="0" border="0">' +
                    '    <tr>';
	            for (var j = 0; j < aFldTbl[i].length; j++) {
	                sContent +=
                        '  <td id="' + (this._sInstance + '_fld_' + aFldTbl[i][j]["name"] + "_place") + '" valign="top"></td><td style="width: 10px;"></td>';
	            }
	            sContent +=
                    '    </tr>';
	            if (i < aFldTbl.length - 1) {
	                sContent +=
	                    '<tr><td style="height: 30px;">&nbsp;</td></tr>';
	            }
	            sContent +=
	                '  </table>' +
                    '</div>';
	        }
	        insertContent(sPlace, sContent);
	        for (var i = 0; i < this._aFields.length; i++) {
	            oFld = new CFieldPS(
	                this,
	                ('_fld_' + this._aFields[i]["name"]),
	                (this._sInstance + '_fld_' + this._aFields[i]["name"] + "_place"),
	                this._aFields[i]);
	            oFld.attachListener("onFieldFull",
	                $delegate(this, this._onFieldFull));
	            oFld.attachListener("onFieldEmpty",
	                $delegate(this, this._onFieldEmpty));
	            oFld.attachListener("onValid",
	                $delegate(this, this._onFieldValid));
	            oFld.attachListener("onClick",
	                $delegate(this, this._onFieldClick));
	            oFld.attachListener("onTabClick",
	                $delegate(this, this._getNextField));
	            this._aFldObjects.push(oFld);
	            oFld.render();
	            if (i == 0) {
	                oFld.setActive(true);
	            }
	        }
	    }
	}
);


	PSInputTab = createClass
(
	PSCInputTab,
	{
	    ctor: function(oParent, sInstance, sCtrlPlace, sId, sPrvName, sLogo, sKbType, aFields) {
	        CDGInputTab.base.ctor.call(this, oParent, sInstance, sCtrlPlace, sId, sPrvName, sLogo, sKbType, aFields);
	    },

	    _prepareTemplate: function() {
	        var sContent = "";
	        CInputTab.base._paint.apply(this, arguments);
	        if (!$isNoU($(this._sPlace))) {
	            sContent +=
	                '<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">' +
	                '  <tr>' +
	                '    <td style="width: 100%; height: 100%" align="center" valign="top">' +
	                '      <table cellpadding="0" cellspacing="0" border="0" style="margin-top: 30px;">' +
	                '        <tr>' +
	                '          <td id="' + this._sInstance + '_fields_place" align="center" valign="top"></td>' +
                    '          <td valign="top" width="320" align="right"><div id="' + this._sInstance + '_bs" style="width: 301px; height: 121px; margin-top: 10px;"></div></td>' +
	                '        </tr>' +
	                '      </table>' +
	                '    </td>' +
	                '  </tr>' +
	                '  <tr>' +
	                '    <td id="' + this._sInstance + '_kb_place" align="center" style="padding: 15px 0"></td>' +
	                '  </tr>' +
	                '</table>';
	            insertContent(this._sPlace, sContent);
	        }
	    },

	    _paint: function () {
	        CDGInputTab.base._paint.apply(this, arguments);
	        this._renderBS(this._sInstance + "_bs");
	    },

	    _renderBS: function (sPlace) {
	        var oBtn = new CImageButton(this, "bs_btn", sPlace, "BACKSPACE", "./img/ui/delbtn.gif");
	        oBtn.attachListener("onClick", $delegate(this, this._kbKeyPressed));
	        oBtn.render();
	        this._initDate();
	    },
	    
	    _initDate: function() {
	        var oDate = new Date();
            var sDate = oDate.getDate().toString();
            var sMonth = (oDate.getMonth() + 1).toString();
            var sYear = oDate.getFullYear().toString();
            var oKb = new CALKeyboard();

            if (sDate.length == 1) {
                sDate = '0' + sDate;
            }

            if (sMonth.length == 1) {
                sMonth = '0' + sMonth;
            }
            
            oKb.attachListener("onKeyPress", $delegate(this, this._kbKeyPressed));
            
            oKb.keyPress('TAB');
            oKb.keyPress('TAB');

            for (var i = 0; i < sDate.length; i++) {
                oKb.keyPress(sDate.charAt(i));
            }

            for (var i = 0; i < sMonth.length; i++) {
                oKb.keyPress(sMonth.charAt(i));
            }

            for (var i = 0; i < sYear.length; i++) {
                oKb.keyPress(sYear.charAt(i));
            }
	    }
	}
);


	CBtnTab = createClass
(
	CTab,
	{
	    ctor: function(oParent, sInstance, sCtrlPlace, sId, aButtons) {
	        CBtnTab.base.ctor.call(this, oParent, sInstance, sCtrlPlace, sId);
	        this._oButtons = this._getButtons(aButtons);
	        if (!$sizeOf(this._oButtons)) {
	            document.location.href = "./index.html";
	        }
	        this._bIsListenersModified = false;
	        this._nRows = 4;
	        this._nColumns = 5;
	        this._nStartIdx = 1;
	        this._oDisplayButtons = {};
	        this._choiceDisplayButtons(this._nStartIdx);
	        this._aSavedLeftBtnClick = [];
	        this._aSavedRightBtnClick = [];
	    },

	    _getButtons: function(aButtons) {
	        var oResult = {};
	        if (!$isNoU(aButtons) && aButtons.is(Array)) {
	            for (var i = 0; i < aButtons.length; i++) {
	                if (!$isNoU(aButtons[i]) &&
	                    ((!$isNoU(aButtons[i]["altName"]) &&
	                    aButtons[i]["altName"].is(String) &&
	                    aButtons[i]["altName"].length) ||
	                    (!$isNoU(aButtons[i]["img"]) &&
	                    aButtons[i]["img"].is(String) &&
	                    aButtons[i]["img"].length)) &&
	                    aButtons[i]["pageId"].is(String) &&
	                    /^\d+$/.test(aButtons[i]["pageId"])) {
	                    oResult[aButtons[i]["pageId"]] = aButtons[i];
	                }
	            }
	        }
	        return oResult;
	    },

	    _paint: function() {
	        var nCounter = 1;
	        var oBtn = null;
	        var sTable = "";
	        var nDispBtnCount = $sizeOf(this._oDisplayButtons);
	        var nBtnCount = $sizeOf(this._oButtons);
	        CBtnTab.base._paint.apply(this, arguments);
	        if (!$isNoU($(this._sPlace))) {
	            sTable =
	                '<table cellpadding="5" cellspacing="0" border="0" width="100%" height="100%">';
	            for (var i = 1; i <= this._nRows; i++) {
	                sTable +=
	                '  <tr>';
	                for (var j = 1; j <= this._nColumns; j++) {
	                    sTable +=
	                    '<td id="' + (this._sInstance + '_btn_' + (j + ((i - 1) * this._nColumns))) + '" width="' + (100 / this._nColumns) + '%" height="' + (100 / this._nRows) + '%" align="center" valign="top"></td>';
	                }
	                sTable +=
	                '  </tr>';
	            }
	            sTable +=
	                '</table>';
	            insertContent(this._sPlace, sTable);
	            for (var f in this._oButtons) {
	                if (this._oDisplayButtons.hasOwnProperty(f)) {
	                    oBtn = new CElementButton(this, ("btn_" + nCounter.toString(10)),
	                        this._sInstance + '_btn_' + nCounter.toString(10), f,
	                        this._oDisplayButtons[f]["altName"], this._oDisplayButtons[f]["img"]);
	                    oBtn.attachListener("onClick",
	                        $delegate(this, $callback(this._btnClicked, this._oDisplayButtons[f])));
	                    oBtn.render();
	                    nCounter++;
	                }
	            }
	        }
	        if (nDispBtnCount < nBtnCount) {
	            if (nDispBtnCount == (this._nRows * this._nColumns)) {
	                this._bIsListenersModified = true;
	                this._aSavedLeftBtnClick =
	                    this.getParent().getLeftBtmBtn().detachListener("onClick");
	                this._aSavedRightBtnClick =
	                    this.getParent().getRightBtmBtn().detachListener("onClick");
	                this.getParent().getLeftBtmBtn().attachListener("onClick", $delegate(this, this._backButtonClick));
	                this.getParent().getRightBtmBtn().attachListener("onClick", $delegate(this, this._nextButtonClick));
	                this.getParent().getLeftBtmBtn().setEnabled(true);
	                this.getParent().getRightBtmBtn().setEnabled(true);
	            }
	            else {
	                this.getParent().getRightBtmBtn().setEnabled(false);
	            }
	        }
	        else {
	            this.getParent().getRightBtmBtn().setEnabled(false);
	        }
	    },

	    show: function(bShow) {
	        CBtnTab.base.show.apply(this, arguments);
	        if (bShow) {
	            this._paint();
	        }
	    },

	    _choiceDisplayButtons: function(nStartIdx) {
	        var nCounter = 1;
	        var nAddedButtons = 0;
	        this._oDisplayButtons = {};
	        for (var f in this._oButtons) {
	            if (this._oButtons.hasOwnProperty(f)) {
	                if (nCounter >= nStartIdx && nCounter <= (nStartIdx + (this._nRows * this._nColumns))) {
	                    if (nAddedButtons < (this._nRows * this._nColumns)) {
	                        this._oDisplayButtons[f] = this._oButtons[f];
	                        nAddedButtons++;
	                    }
	                    else {
	                        break;
	                    }
	                }
	                nCounter++;
	            }
	        }
	    },

	    _restoreListiners: function() {
	        this.getParent().getLeftBtmBtn().detachListener("onClick");
	        this.getParent().getRightBtmBtn().detachListener("onClick");
	        for (var i = 0; i < this._aSavedLeftBtnClick.length; i++) {
	            this.getParent().getLeftBtmBtn().attachListener("onClick", this._aSavedLeftBtnClick[i]);
	        }
	        for (var i = 0; i < this._aSavedRightBtnClick.length; i++) {
	            this.getParent().getRightBtmBtn().attachListener("onClick", this._aSavedRightBtnClick[i]);
	        }
	    },

	    _btnClicked: function(sender, eargs, extParam) {
	        var oArgs = {};
	        oArgs["pageId"] = eargs.value;
	        if (!$isNoU(extParam)) {
	            for (var f in extParam) {
	                if (extParam.hasOwnProperty(f)) {
	                    oArgs[f] = extParam[f];
	                }
	            }
	        }
	        if (this._bIsListenersModified) {
	            this._restoreListiners();
	        }
	        this.notify("onClick", oArgs);
	    },

	    _nextButtonClick: function(sender, eargs) {
	        this._nStartIdx += (this._nRows * this._nColumns);
	        this._choiceDisplayButtons(this._nStartIdx);
	        this._paint();
	    },

	    _backButtonClick: function(sender, eargs) {
	        if (this._nStartIdx > 1) {
	            this._nStartIdx -= (this._nRows * this._nColumns);
	            this._choiceDisplayButtons(this._nStartIdx);
	            this._paint();
	        }
	        else {
	            this._restoreListiners();
	            this.notify("onBtmMenuClick", { value: "BACK", sender: sender, eargs: eargs });
	        }
	    }
	}
);

function getProviderButton(title, image)
{
	return '<div class="provider-button" id="providerButton"><div style="background-image: url(\'./img/ui_item/' + image + '\')"></div><p>' + title + '</p></div>';
};
function cntrProviderButton()
{
	var el = $('providerButton').getElementsByTagName('p')[0];
	el.innerHTML = autohyphen.hyphenizeText(el.innerHTML);
	el.style.marginTop = (el.parentNode.clientHeight - el.clientHeight) / 2 + 'px';
};