%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/voting.vote.edit/templates/.default/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/voting.vote.edit/templates/.default/script.js |
(function() { if (window.BVoteConstructor) return; // uploader section BX.addCustomEvent('onClickMulti', function(node){ var answers = BX.findChildren(node.parentNode.previousSibling, {attribute : {"data-bx-answer-field" : "field-type"}}, true); for (var i = 0; i < answers.length; i++) { answers[i].value = node.checked ? "1" : "0"; } }); top.BVoteConstructor = window.BVoteConstructor = function(Params) { this.controller = Params.controller; this.maxQ = parseInt(Params['maxQ']); this.maxA = parseInt(Params['maxA']); this.q = {num : 0, cnt : 0}; this.a = [{num : 0, cnt : 0}]; this.InitVoteForm(); }; window.BVoteConstructor.prototype.checkAnswerAdding = function(qId) { var nodeQuestion = BX('question_' + qId); if (this.a[qId].list) { if (this.a[qId].list.firstChild) { BX.unbindAll(nodeQuestion); var node = this.a[qId].list.firstChild; do { BX.unbind(node.firstChild, "focus", BX.proxy(this._do, this)); } while ((node = node.nextSibling) && BX(node)); } } if (this.maxA > 0 && this.a[qId].cnt >= this.maxA) { if (this.a[qId].node) { BX.hide(this.a[qId].node); } return false; } if (this.a[qId].node) { BX.show(this.a[qId].node); } else if (this.a[qId].list) { if (this.a[qId].list.lastChild) { BX.bind(this.a[qId].list.lastChild.firstChild, "focus", BX.proxy(this._do, this)); } else { BX.bind(nodeQuestion, "focus", BX.proxy(this._do, this)); } } return true; }; window.BVoteConstructor.prototype.checkQuestionAdding = function() { if (this.maxQ > 0 && this.q.cnt >= this.maxQ) { if (this.q.node) this.q.node.style.display = "none"; return false; } if (this.q.node) this.q.node.style.display = ""; return true; }; window.BVoteConstructor.prototype.InitVoteForm = function() { var vOl = BX.findChild(this.controller, {"tagName" : "OL", "className" : "vote-questions"}, true), vLi = vOl.childNodes, regexp = /question_(\d+)/ig, num = !!vLi ? regexp.exec(vOl.lastChild.firstChild.firstChild.id) : [0, 0, 0]; this.q.cnt = vLi.length; this.q.num = parseInt(num[1]); this.q.node = BX.findChild(this.controller, {"tagName" : "A", "className" : "addq"}, true); var aOl, aLi, regexpa, ii; for (ii = 0; ii < vLi.length; ii++) { if (vLi[ii] && vLi[ii]["tagName"] == "LI") { aOl = BX.findChild(vLi[ii], {"tagName" : "OL"}, true); aLi = BX.findChildren(aOl, {"tagName" : "LI"}, false); regexpa = /answer_(\d+)__(\d+)_/gi; num = [0, 0, 0]; if (aOl.lastChild) { num = regexpa.exec(aOl.lastChild.firstChild.id); } else { num = regexp.exec(vLi[ii].firstChild.firstChild.id); num[2] = 0; } this.a[num[1]] = { cnt : aLi.length, num : parseInt(num[2]), node: false, "list": aOl}; this.checkAnswerAdding(num[1]); } } this.checkQuestionAdding(); var nodeTags = ["LABEL", "A"], a; for (var nodeTag in nodeTags) { if (nodeTags.hasOwnProperty(nodeTag)) { a = BX.findChildren(vOl.parentNode, {"tagName" : nodeTags[nodeTag]}, true); for (ii in a) { if (a.hasOwnProperty(ii) && !BX.hasClass(a[ii], "vote-checkbox-label")) { BX.bind(a[ii], "click", BX.delegate(this._do, this)); } } } } }; window.BVoteConstructor.prototype._do = function(e) { BX.PreventDefault(e); var reg = /(add|del)\w/, node = BX.proxy_context, className = reg.exec(BX.proxy_context.className), res, ii, a, q, aOl, qOl, regexp; if (!!className) { switch (className[0]) { case "adda" : var qLi = BX.findParent(node, {"className" : "vote-question", "tagName" : "li"}); aOl = BX.findChild(qLi, {"tagName" : "OL"}, true); regexp = /answer_(\d+)__(\d+)_/i; q = regexp.exec(node.getAttribute("id")); if (!q) { regexp = /question_(\d+)/i; q = regexp.exec(node.getAttribute("id")); } q = (!!q ? q[1] : null); if (q != null && this.checkAnswerAdding(q)) { this.a[q].num++; this.a[q].cnt++; res = BX.create('DIV', {'html' : BX.message('VOTE_TEMPLATE_ANSWER'). replace(/#Q#/gi, q).replace(/#A#/gi, this.a[q].num). replace(/#A_FIELD_TYPE#/gi, (BX("multi_" + q) && BX("multi_" + q).checked ? "1" : "0")). replace(/#A_VALUE#/gi, "").replace(/#A_PH#/gi, (this.a[q].num + 1))}); a = BX.findChildren(res.firstChild, {"tagName" : "LABEL"}, true); for (ii in a) { if (a.hasOwnProperty(ii) && !BX.hasClass(a[ii], "vote-checkbox-label")) { BX.bind(a[ii], "click", BX.delegate(this._do, this)); } } aOl.appendChild(res.firstChild); this.checkAnswerAdding(q); } break; case "dela" : regexp = /answer_(\d+)__(\d+)_/i; q = regexp.exec(node.getAttribute("for")); q = (!!q ? q[1] : null); var aLi = BX.findParent(node, {"tagName" : "li"}); aOl = BX.findParent(aLi, {"tagName" : "OL"}); node = BX(node.getAttribute("for")); if (node.value != '' && !confirm(BX.message("VVE_ANS_DELETE"))) return false; aOl.removeChild(aLi); this.a[q].cnt--; this.checkAnswerAdding(q); break; case "addq" : if (this.checkQuestionAdding()) { qOl = BX.findChild(node.parentNode, {"tag" : "OL"}, false); this.q.num++; this.q.cnt++; res = BX.message('VOTE_TEMPLATE_ANSWER').replace(/#A#/gi, 0).replace(/#A_PH#/gi, 1).replace(/#A_FIELD_TYPE#/gi, "0").replace(/#A_VALUE#/gi, "") + BX.message('VOTE_TEMPLATE_ANSWER').replace(/#A#/gi, 1).replace(/#A_PH#/gi, 2).replace(/#A_FIELD_TYPE#/gi, "0").replace(/#A_VALUE#/gi, ""); res = BX.create("DIV", {html : BX.message('VOTE_TEMPLATE_QUESTION'). replace(/#ANSWERS#/gi, res).replace(/#Q#/gi, this.q.num). replace(/#Q_VALUE#/gi, "").replace(/#Q_MULTY#/gi, "")}); a = BX.findChildren(res.firstChild, {"tagName" : "LABEL"}, true); for (ii in a) { if (a.hasOwnProperty(ii) && !BX.hasClass(a[ii], "vote-checkbox-label")) { BX.bind(a[ii], "click", BX.delegate(this._do, this)); } } this.a[this.q.num] = { num : 1, cnt : 2, node: false, "list": BX.findChild(res, {"tag" : "OL"}, true, false)}; qOl.appendChild(res.firstChild); BX('question_' + this.q.num).focus(); this.checkQuestionAdding(); this.checkAnswerAdding(this.q.num); } break; case "delq" : q = node.getAttribute("for"); var question = node.previousSibling; qOl = BX.findParent(question, {"tagName" : "OL"}); q = parseInt(q.replace(/question_/gi, "")); if (question.value != '' && !confirm(BX.message("VVE_QUESTION_DELETE"))) return false; qOl.removeChild(BX.findParent(question, {"tagName" : "LI"})); this.q.cnt--; this.checkQuestionAdding(); break; } } return true; }; })();