EStore.Questions = function(rootElement) {
    this.rootElement = rootElement;
    this.qContext = 'root';
    this.allQuestions = 0;
    this.DOMcontext = this.rootElement;
    this._valCache = {};
    this.get();
}
EStore.Questions.prototype = {
    get: function() {
        var self = this;
        var params = {
            '_interface': 'questions',
            'q_context': this.qContext
        };
        this.DOMcontext.innerHTML = 'Загрузка ...';
        $.post('/ajax/', params, function(data) { self.parseResponse(data) }, 'xml');
    },
    parseResponse: function(data) {
        var self = this;
        this.DOMcontext.innerHTML = '';
        var questions  = data.getElementsByTagName('question');
        var qLength = questions.length;
        if (qLength > 0) {
            if (this.qContext == 'root') this.allQuestions = parseInt(questions[0].getAttribute('all'));
            for (var i=0; i<questions.length; i++) {
                var qHtml = questions[i].getElementsByTagName('html')[0];
                if (qHtml) {
                    var $cntEl = $(document.createElement('div')).addClass('question-block').html(_getTextContent(qHtml)).appendTo(this.DOMcontext);
                    if ((!this.allQuestions) && (questions[i].getAttribute('class') == 'eb_question') && (questions[i].getAttribute('type') == 'radio')) {
                        var $chCnt = $(document.createElement('div')).addClass('question-block').appendTo($cntEl);
                        $('input[type=radio]', $cntEl).click(function() { self.checkRadioClick(this); }).each(function() { self._valCache[this.name] = 0; this.__cntEl = $chCnt.get(0); });
                    }
                }
            }
        }
    },
    checkRadioClick: function(element) {
        if ((!this._valCache[element.name]) || (this._valCache[element.name] != element.value)) {
            this._valCache[element.name] = element.value;
            if (element.__cntEl) {
                this.qContext = element.value;
                this.DOMcontext = element.__cntEl;
                this.get();
            }
        }
    }
}

