jQuery(function () { var pageTmpl = '
{container}
'; var headerTmpl = '

{text}

{title} - {description}

'; var headerMinTmpl = '

{text}

'; var questionTmpl = '

{number}. {text}

'; var answers = '
  • {text}
  • '; var buttonTmpl = ''; var finalTmpl = '

    {text}

    {testSuccess}
    {testResult}
    {result}
    {testTxt1}
    {testTxt2}
    ' + '
    ' + '' + '' + '' + '' + '' + '
    Получить подробные
    объяснения по результатам
    теста к себе на почту
    ' + 'Ваше Имя' + 'Ваш E-mail' + '' + '
    ' + '
    '; window.TestModel1 = function () { this.testCaption = window.testTitle || 'Тест'; this.testInstructionTitle = 'Краткая вводная инструкция по тесту'; this.testInstructionDescription = [ 'Вам предстоит ответить на несколько вопросов-утверждений, которые описывают ваше состояние. На каждый пункт возможен только 1 ответ.', 'Пожалуйста, прочитайте внимательно каждое утверждение и решите, чувствуете ли вы себя подобным образом. Если вам не свойственно описанное ощущение - в бланке ответов отметьте позицию — «никогда». Если оно для вас характерно, укажите, насколько часто. Для этого напротив вопроса поставьте отметку, которая отвечает частоте возникновения того или иного чувства.', 'Подсчет результатов идет в автоматическом режиме. По завершению прохождения теста вы увидите свой результат.' ]; this.notAllAnswers = 'Вы пропустили некоторые ответы. Ответьте на них, пожалуйста, вы сможете двигаться дальше.'; this.testSuccess = 'Поздравляю, вы успешно справились с тестом!'; this.testResult = 'Ваш результат:'; this.testTxt1 = 'Запишите его, чтобы учесть все рекомендации по своим личным результатам.'; this.testTxt2 = 'Оставьте свои данные в форме ниже и подробное разъяснение результатов теста придет вам в письме. Мы пришлем вам несколько видео с разбором и рекомендациями по каждой группе результатов теста.'; var answers_standart = [ { id: '1', points: 0, text: 'Никогда' }, { id: '2', points: 1, text: 'Очень редко' }, { id: '3', points: 2, text: 'Редко' }, { id: '4', points: 3, text: 'Иногда' }, { id: '5', points: 4, text: 'Часто' }, { id: '6', points: 5, text: 'Очень часто' }, { id: '7', points: 6, text: 'Всегда' } ]; this.subscribe = [ { id: "423466", sex: '1', target: '1' }, //СЭВ: проблемы на работе Ж - 423466 { id: "423464", sex: '2', target: '1' }, //СЭВ: проблемы на работе М - 423464 { id: "423470", sex: '1', target: '2' }, //СЭВ: проблемы в семье Ж - 423470 { id: "423468", sex: '2', target: '2' }, //СЭВ: проблемы в семье М - 423468 { id: "423474", sex: '1', target: '3' }, //СЭВ: проблемы в личной жизни Ж - 423474 { id: "423472", sex: '2', target: '3' }, //СЭВ: проблемы в личной жизни М - 423472 { id: "423478", sex: '1', target: '4' }, //СЭВ: финансовые проблемы Ж - 423478 { id: "423476", sex: '2', target: '4' }, //СЭВ: финансовые проблемы М - 423476 { id: "423482", sex: '1', target: '5' }, //СЭВ: недовольство собой Ж - 423482 { id: "423480", sex: '2', target: '5' } //СЭВ: недовольство собой М - 423480 ]; this.questions = [ { id: 1, group: 'sex', text: 'Уточните, пожалуйста, кто вы', answers: [ { id: '1', points: -1, text: 'Я - женщина' }, { id: '2', points: -1, text: 'Я - мужчина' } ] }, { id: 2, group: 'target', text: 'Эта сфера моей жизни вызывает больше всего внутреннего напряжения и стресса в моей жизни', answers: [ { id: '1', points: -1, text: 'Работа и все, что с ней связано' }, { id: '2', points: -1, text: 'Отношения с близкими в семье (родители, муж/жена, дети)' }, { id: '3', points: -1, text: 'Неудачи в личной жизни или ее полное отсутствие' }, { id: '4', points: -1, text: 'Финансовые проблемы' }, { id: '5', points: -1, text: 'Неудовлетворенность собой' }, ] }, { id: 3, group: 'X', text: 'Я чувствую себя эмоционально истощенной', answers: answers_standart }, { id: 4, group: 'X', text: 'В конце рабочего дня я чувствую себя, как выжатый лимон', answers: answers_standart }, { id: 5, group: 'X', text: 'Я чувствую себя уставшей, когда просыпаюсь утром и должна идти на работу', answers: answers_standart }, { id: 6, group: 'Z', text: 'Я хорошо понимаю, что чувствуют мои коллеги или близкие, но использую их (коллег и близких) в своих интересах без оглядки на их чувства', answers: answers_standart }, { id: 7, group: 'Y', text: 'Я чувствую, что общаюсь с некоторыми коллегами, близкими и знакомыми, как с предметами (без теплоты и симпатии к ним)', answers: answers_standart }, { id: 8, group: 'X', text: 'Я чувствую себя энергичной, ощущаю эмоциональный подъем. Я – просто живчик', answers: answers_standart }, { id: 9, group: 'Z', text: 'Я умею находить правильные решения в конфликтных ситуациях', answers: answers_standart }, { id: 10, group: 'X', text: 'Я чувствую угнетенность и апатию', answers: answers_standart }, { id: 11, group: 'Z', text: 'Я могу положительно влиять на продуктивность работы моих коллег, мотивировать своих друзей и близких', answers: answers_standart }, { id: 12, group: 'Y', text: 'Я последнее время чувствую себя более черствой (нечувствительной) в отношениях с коллегами, знакомыми и близкими', answers: answers_standart }, { id: 13, group: 'Y', text: 'Как правило, те, с кем мне приходится работать, — неинтересные люди, и они скорее утомляют, нежели радуют меня', answers: answers_standart }, { id: 14, group: 'Z', text: 'У меня много планов на будущее, и я верю в их осуществление', answers: answers_standart }, { id: 15, group: 'X', text: 'У меня все больше жизненных разочарований', answers: answers_standart }, { id: 16, group: 'X', text: 'Я чувствую равнодушие и потерю интереса ко многим вещам, которые радовали меня раньше', answers: answers_standart }, { id: 17, group: 'Y', text: 'Иногда мне действительно безразлично, что происходит с некоторыми из моих коллег, знакомыми', answers: answers_standart }, { id: 18, group: 'X', text: 'Мне хочется уединиться и отдохнуть от всего и от всех', answers: answers_standart }, { id: 19, group: 'Z', text: 'Я могу легко создать атмосферу доброжелательности и сотрудничества в коллективе или компании своих знакомых', answers: answers_standart }, { id: 20, group: 'Z', text: 'Я легко общаюсь с людьми, независимо от их статуса и характера', answers: answers_standart }, { id: 21, group: 'Z', text: 'Я успеваю много сделать за день', answers: answers_standart }, { id: 22, group: 'X', text: 'Я чувствую себя на пределе возможностей', answers: answers_standart }, { id: 23, group: 'Z', text: 'Я многого еще могу достичь в своей жизни', answers: answers_standart }, { id: 24, group: 'Y', text: 'Иногда коллеги или близкие перекладывают на меня часть своих проблем и обязанностей', answers: answers_standart } ]; this.page_1 = { questions: [1, 2, 3, 4, 5, 6], getHeader: function (model) { return headerTmpl .replace('{text}', model.testCaption) .replace('{title}', model.testInstructionTitle) .replace('{description}', model.testInstructionDescription.join('

    ')); }, buttonTitle: 'ДАЛЕЕ', action: { id: 'next_page', page: '2' } }; this.page_2 = { questions: [7, 8, 9, 10, 11, 12], buttonTitle: 'ЕЩЕ НЕМНОГО', action: { id: 'next_page', page: '3' }, getHeader: function (model) { return headerMinTmpl .replace('{text}', model.testCaption); } }; this.page_3 = { questions: [13, 14, 15, 16, 17, 18], buttonTitle: 'ЕЩЕ ОДИН ШАГ', action: { id: 'next_page', page: '4' }, getHeader: function (model) { return headerMinTmpl .replace('{text}', model.testCaption); } }; this.page_4 = { questions: [19, 20, 21, 22, 23, 24], buttonTitle: 'ПОЛУЧИТЬ РЕЗУЛЬТАТЫ ТЕСТА', action: { id: 'next_page', page: '5' }, getHeader: function (model) { return headerMinTmpl .replace('{text}', model.testCaption); } }; this.page_5 = { action: { id: 'submit' }, getHeader: function (model, statistic) { var item = $.grep(model.subscribe, function (e) { return e.target == statistic.target && e.sex == statistic.sex; }); return finalTmpl .replace('{text}', model.testCaption) .replace('{testSuccess}', model.testSuccess) .replace('{testResult}', model.testResult) .replace('{result}', statistic.X + '/' + statistic.Y + '/' + statistic.Z) .replace('{testTxt1}', model.testTxt1) .replace('{testTxt2}', model.testTxt2) .replace('{subscribeId}', item[0].id) .replace('{tid}', window.test_tid || 0); } }; return this; }; $.fn.testPlugin = function (options) { var options = $.extend({ model: window.TestModel1 }, options); var model = new options.model(); var renderPage = function (page_id, statistic) { var str = pageTmpl; var page = model['page_' + page_id]; var questions = ''; if (page.getHeader) { questions += page.getHeader(model, statistic); } if (page.questions) { var buffer = $.grep(model.questions, function (n) { return $.inArray(n.id, page.questions) != -1; }); for (var i = 0; i < buffer.length; i++) { var q = buffer[i]; var cur_question = questionTmpl .replace('{id}', q.id) .replace('{number}', q.id) .replace('{text}', q.text) .replace('{group}', q.group); var ans = ''; for (var j = 0; j < q.answers.length; j++) { ans += answers .replace('{points}', q.answers[j].points) .replace('{text}', q.answers[j].text) .replace('{questionId}', q.id) .replace('{value}', q.answers[j].id); } questions += cur_question.replace('{container}', ans); } } if (page.action.id == 'next_page') { questions += buttonTmpl .replace('{text}', page.buttonTitle) .replace('{next_page}', page.action.page) .replace('{current_page}', page_id); } return str.replace('{container}', questions); }; return this.each(function () { var $this = $(this); $this.html(renderPage(1)); var statistic = { X: 0, Y: 0, Z: 0, target: null, sex: null }; $this.find('input[type="text"]').live('focusin focusout', function (e) { var context = $(this); var label = $this.find('span[data-id="' + context.data('id') + '"]'); if (e.type == "focusin") { label.hide(); } else if (!$.trim(context.val()).length) { label.show(); } }); $this.find('#test_form').live('submit', function () { var success = true; $this.find('input[type="text"]').each(function () { if (!$.trim($(this).val()).length) { alert('Пожалуйста заполните все поля'); success = false; return false; } }); if(!success){ return false; } var email= $this.find('input[data-id="email"]').val(); if (!email.match(/^[\+A-Za-z0-9][\+A-Za-z0-9\._-]*[\+A-Za-z0-9_]*@([A-Za-z0-9]+([A-Za-z0-9-]*[A-Za-z0-9]+)*\.)+[A-Za-z]+$/)) { alert('Некорректный синтаксис email-адреса!'); return false; } return true; }); $this.find('#next_page_button').live('click', function () { var button = $(this); var radioButtons = $this.find('input[type="radio"]:checked'); var curPage = model['page_' + button.data('current')]; if (curPage.questions && radioButtons.length != curPage.questions.length) { alert(model.notAllAnswers); return; } radioButtons.each(function () { var $r = $(this); var pt = $r.data('points'); var group = $r.parents('.test_group').data('group'); if (pt != -1) { statistic[group] += pt; } else { statistic[group] = $r.data('value'); } }); var page_id = button.data('next'); $this.html(renderPage(page_id, statistic)); window.scrollTo(0, $this.scrollTop()); }); }); }; });