
msg_complete_unanswered = 'Будь ласка, заповните обов\'язковi для заповнення поля.';
msg_only_one = 'Будь ласка, виберiть тiльки один варiант.';
msg_only_one_variant = 'Будь ласка, виберiть тiльки один варiант.';
msg_answer_all = 'Будь ласка, заповните всi обов\'язковi для заповнення поля.';
msg_correct_email = 'Введiть коректний e-mail.';

var cur_bg;
var cur_elem;

function focusFormElem(frm, elem)
{
	// Remember current highlight
	if (cur_elem != elem)
	{
		cur_bg = elem.style.backgroundColor;
		cur_elem = elem;
	}
	
	elem.style.backgroundColor = '#ffdcdc';
	
	elem.focus();
}

function chechFormFields(frm)
{
	// Reset current highlight	
	if (cur_elem != undefined && cur_bg != undefined)
	{	
		cur_elem.style.backgroundColor = cur_bg;
	}
	
	// Check, common for all surveys
	var el1  = null; // текущий элеметн формы
	var el2 = null; // предыдущий элемент формы
	var mailRE = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
	var f1, f2;
	var i;

	for(i=0; i<frm.elements.length; i++)
	{
		el2 = el1;
		el1  = frm.elements[i];
		f1  = (el1 && (el1.checked || (el1.options && el1.selectedIndex!=0) || (el1.type!='checkbox' && el1.type!='radio' && !el1.options && el1.value && el1.value!='')));
		f2  = (el2 && (el2.checked || (el2.options && el2.selectedIndex!=0) || (el2.type!='checkbox' && el2.type!='radio' && !el2.options && el2.value && el2.value!='')));
	
		// Если заполнен текущий эл-т, то должен быть заполнен и предыдущий
		if (el1.id == 'if_AND' && f1 && !f2)
		{
			alert(msg_complete_unanswered);
			// el2.focus();
			focusFormElem(frm, el2);
			return false;
		}
	
		// Предыдущий и последующий должны заполнены быть только вместе
		if (el1.id == 'if_NOT_XOR' && (f1 && !f2))
		{
			alert(msg_complete_unanswered);
			// el2.focus();
			focusFormElem(frm, el2);
			return false;
		}
		if (el1.id == 'if_NOT_XOR' && (f2 && !f1))
		{
			alert(msg_complete_unanswered);
			// el1.focus();
			focusFormElem(frm, el1);
			return false;
		}
	
		// Должен быть выбран ОДИН итолько ОДИН из 2-х ответов
		if (el1.id == 'if_XOR' && ((f2 && f1) || (!f2 && !f1)))
		{
			alert(msg_only_one);
			// el1.focus();
			focusFormElem(frm, el1);
			return false;
		}
	
		// for Select
		if (el1.options && (el1.selectedIndex==0 || el1.selectedIndex==-1) && el1.id == 'SELECT')
		{
			alert(msg_answer_all);
			// el1.focus();
			focusFormElem(frm, el1);
			return false;
		}

		// for list of RadioButtons or CheckBoxes, where 1 must be selected
		if (el1.id == 'CHECK') 
		{
			rb_name = el1.name;
			rb_i = 0;
			rb_checked = false;
		
			rb_elem = eval("frm.elements['" + rb_name + "'][" + rb_i + "]");
			while(rb_elem != undefined)
			{
				if(rb_elem.checked)
				{
					rb_checked = true;
					break;
				}
				rb_i++;
				rb_elem = eval("frm.elements['" + rb_name + "'][" + rb_i + "]");
			}
			if (!rb_checked)
			{
				alert(msg_only_one_variant);
				// el1.focus();
				focusFormElem(frm, el1);
				return false;
			}
		}

		// for 1 Text or TextArea, that must be filled
		if (!el1.value && el1.id && el1.id == 'FILL') 
		{
			alert(msg_answer_all);
			// el1.focus();
			focusFormElem(frm, el1);
			return false;
		}

		// for E-mail in Text or TextArea, that must be filled
		if ((!el1.value || !el1.value.match(mailRE)) && el1.id && el1.id == 'EMAIL') 
		{
			alert(msg_correct_email);
			// el1.focus();
			focusFormElem(frm, el1);
			return false;
		}
		
		// for 1 CheckBox, that must be checked
		if (!f1 && el1.id && el1.id == 'CHECK_CB') 
		{
			alert(msg_answer_all);
			// el1.focus();
			focusFormElem(frm, el1);
			return false;
		}	
    	
	}
	return true;
}
