';
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());
});
});
};
});