/*
	this version works with graphical elements, radio elements can be
	mixed with checkboxes.
	to work with standard elements function Toggle should be modified
	by removing elem.src refrences

	V.G., 10.5.06
*/
var path="/te_images/tests/buttons/";
var qStr = "";	// list of questions ids
var aStr = "";  // list of answer ids

var elmnt = document.questionnaire;
var len = document.questionnaire.length;
var radiovalid = new Array();   // control for radio questions
															  // index=display number; value= -1(not answered)/1(otherwise)
var radioindexes = new Array(); // array of radiovalid indexes
var radioindex = 1;
var checkvalid = new Array();   // control for checkbox questions
															  // index=display number; value= 0(not answered)/number of answers
var checkindexes = new Array(); // array of checkvalid indexes
var checkindex = 1;
var mandatory_lower = new Array();  // mandatory lower number of answers for checkbox questions
var mandatory_upper = new Array();	// upper limit for checkbox answers

if(window.HideBtnNext){
	document.getElementById('btnNext').style.display="none";
}
//if(document.getElementById('HideBtnNext') != null){
//	document.getElementById('btnNext').style.display="none";
//}
//else{
//	alert("ral");
//}

for (var i=0;i<len;i++) {
	var ef = elmnt.elements[i];
	if(ef.name == "qradio") {
		radioindexes[radioindex] = ef.value;
		radiovalid[ef.value] = -1;
		radioindex++;
	}
	else if (ef.name == "qcheck") {
		checkindexes[checkindex] = ef.value;
		checkvalid[ef.value] = 0;
	}
	else if (ef.name == "mandatory_lower") {
		mandatory_lower[checkindexes[checkindex]] = ef.value;
	}
	else if (ef.name == "mandatory_upper") {
		mandatory_upper[checkindexes[checkindex]] = ef.value;
		checkindex++;
	}
}
//---------------------------------
function IsQuestion(id) {
	if (id) {
		if (id.indexOf('rad_') == 0 || id.indexOf('cb_') == 0) {
			return true;
		}
	}
	return false;
}
//---------------------------------
function GetQuestionaire() {
	var alltags=document.all? document.all : document.getElementsByTagName("*");
	for (var i=0; i<alltags.length; i++) {
		if (IsQuestion(alltags[i].id)) {
			AppendQuestion(alltags[i].id);
		}
	}
	return true;
}
//---------------------------------
function AppendQuestion(id) {
	var arr = id.split('_');

	if (arr[0] == "rad") {
		if (arr[3] == '1') {
			qStr += arr[1] + ',';
			aStr += arr[2] + ',';
		}
	}
	else if (arr[0] == "cb") {
		qStr += arr[1] + ',';
		aStr += arr[3] + ',';
	}
	return true;
}
//---------------------------------
function Toggle(type, nID, qID, aID) {

	var elem;
	if (type == "rad") {
		for (var i=1; 1; ++i) {
			elem = GetAnswer("rad_"+qID+'_'+i);
			if (elem) {
				elem.id = "rad_"+qID+'_'+i+"_0";
				elem.src = path+"radio_unchecked.gif";
			} else {
				break;
			}
		}
		elem = GetAnswer("rad_"+qID+'_'+aID);
		elem.id = "rad_"+qID+'_'+aID+"_1";
		radiovalid[nID] = 1;
		elem.src = path+"radio_checked.gif";
	}
	else if (type == "cb") {
		if (document.getElementById("cb_"+qID+'_'+aID+"_0")) {
			elem=document.getElementById("cb_"+qID+'_'+aID+"_0");
			elem.id="cb_"+qID+"_"+aID+"_1";
			checkvalid[nID]++;
			elem.src=path+"box_checked.gif";
		}
		else if (document.getElementById("cb_"+qID+'_'+aID+"_1")) {
			elem=document.getElementById('cb_'+qID+"_"+aID+"_1");
			elem.id="cb_"+qID+'_'+aID+"_0";
			checkvalid[nID]--;
			elem.src=path+"box_unchecked.gif";
		}
	}
}
//------------------------------------------------
// jff function. no specific checkboxes for jff
//-----------------------------------------------
function ToggleJFF(type, nID, qID, aID) {
	var elem;
	if (type == "rad") {
		for (var i=1; 1; ++i) {
			elem = GetAnswer("rad_"+qID+'_'+i);
			if (elem) {
				elem.id = "rad_"+qID+'_'+i+"_0";
				elem.src=path+"radio_unchecked_jff.gif";
			} else {
				break;
			}
		}
		elem=GetAnswer("rad_"+qID+'_'+aID);
		elem.id="rad_"+qID+'_'+aID+"_1";
		radiovalid[nID] = 1;
		elem.src=path+"radio_checked_jff.gif";
	}
}
//---------------------------------
function GetAnswer(id) {
	if (document.getElementById(id+"_0")) {
		return document.getElementById(id+"_0");
	} else if (document.getElementById(id+"_1")) {
		return document.getElementById(id+"_1");
	} else {
		return 0;
	}
}
//---------------------------------
function SubmitQuestionnaire() {
	if (radioindex > 1) { // if not, then current page doesn't contain any radio elements
		for (var i=1;i<radioindex;i++) {
			if (radiovalid[radioindexes[i]] == -1) {
				alert("You didn't answer question # " + radioindexes[i] + "\n\n");
				return;
			}
		}
	}
	if (checkindex > 1) { // if not, then current page doesn't contain checkboxes
		for (var i=1;i<checkindex;i++) {
			var val = mandatory_lower[checkindexes[i]];
			if (checkvalid[checkindexes[i]] <  mandatory_lower[checkindexes[i]]) {
				alert('The number of answers for the question #' + checkindexes[i] + ' should not be less than ' + val + '\n\n');
				return;
			}
			val = mandatory_upper[checkindexes[i]];
			if (checkvalid[checkindexes[i]] >  mandatory_upper[checkindexes[i]] && mandatory_upper[checkindexes[i]] != 0) {
				alert('The number of answers for the question #' + checkindexes[i] + ' should not be greater than ' + val + '\n\n');
				return;
			}
		}
	}
	GetQuestionaire();
	elmnt.questionids.value = qStr;
	elmnt.answerids.value = aStr;
	elmnt.submit();
	return 0;
}

