function DoSelectProducts(id_que, id_ans){
	IntersectQuestionProducts(id_que);
	IntersectAllQuestions(id_que);
	var currentTotalDiv = document.getElementById("DIVTotal_" + id_que);
	currentTotalDiv.innerHTML = arrSelectedProducts.length;
	if((arrSelectedProducts.length < 3) || (lastQuestion == id_que)){
		changeActions(0, 1, strFinish, id_que);
	}else{
		changeActions(0, 1, strCommit, id_que);
	}
}

function IntersectQuestionProducts(id_que){
	var arrTmp = new Array();
	var first = true;
	for(answersIDs in arrAnswersProducts[id_que]){
		var el = document.getElementById('id_' + answersIDs);
		if(!el){	//scale type
			for(var i = 0; i < arrScale_noRadios[id_que][answersIDs].length; i++){
				el = document.getElementById('id_' + answersIDs + "" + arrScale_noRadios[id_que][answersIDs][i]);
				if(el.checked) break;
			}
		}
		if(el.checked){
			if(first){
				arrTmp = arrAnswersProducts[id_que][answersIDs];
				first = false;
			}else{
				arrTmp = IntersectArrays(arrTmp, arrAnswersProducts[id_que][answersIDs]);
			}	
		}
	} 
	arrPartialSelected[id_que] = arrTmp;
}

function IntersectArrays(arr1, arr2){
	var arrRes = new Array();
	if(!arr1.length || !arr2.length){
		return arrRes;
	}
	var k = 0
	var nrEl1 = arr1.length;
	var nrEl2 = arr2.length;
	for(var i = 0; i < nrEl1; i++){
		for(var j = 0; j < nrEl2; j++){
			if(arr1[i] == arr2[j]){
				arrRes[k++] = arr1[i];
			}
		}
	}
	return arrRes;
}

function IntersectAllQuestions(id_que){
	var arrTmp = new Array();
	var first = true;
	var currentStep;
	for(var i = 0; i < arrQuestions.length; i++){
		if(arrQuestions[i] == id_que){
			currentStep = i;
			break;
		}
	}
	for(queID in arrAnswered){
		if(arrAnswered[queID] || (queID == id_que)){
			if(first){
				arrTmp = arrPartialSelected[queID];
				first = false;
			}else{
				arrTmp = IntersectArrays(arrTmp, arrPartialSelected[queID]);
			}	
		}	
	}

	arrSelectedProducts = arrTmp;
}

function DoCommit(id_que){
	var elChecked = false;
	for(answerID in arrAnswersProducts[id_que]){
		var elControl = document.getElementById('id_' + answerID);
		if(!elControl){
			for(var i = 0; i < arrScale_noRadios[id_que][answerID].length; i++){
				elControl = document.getElementById('id_' + answerID + arrScale_noRadios[id_que][answerID][i]);
				if(elControl.checked){
					elChecked = true;
					break;
				}	
			}
		}else{
			if(elControl.checked){
				elChecked =true;
				break;
			}
	} 	}
	
	if(!elChecked){
		alert("You must select at least one answer.");
		return false;
	}
	SetSavedAnswers(id_que);
	arrAnswered[id_que] = 1;
	DisableQuestion(currentQuestion);
	EnableNextQuestion(currentQuestion);
	return false;
}

function DisableQuestion(id_que){
	for(answerID in arrAnswersProducts[id_que]){
		var elControl = document.getElementById('id_' + answerID);
		var elLabel = document.getElementById('label_' + answerID);
		if(elLabel){
			elControl.disabled = true;
			elLabel.disabled = true;
		}else{
			//scale type
			for(var i = 0; i < arrScale_noRadios[id_que][answerID].length; i++){
				elControl = document.getElementById('id_' + answerID + arrScale_noRadios[id_que][answerID][i]);
				if(elControl){
					elControl.disabled = true;
				}
			}
		}
	} 
	var actionDiv = document.getElementById('IDAction_' + id_que);
	if(arrAnswered[id_que]){
		changeActions(1, 0, strCommit, id_que);
	}else{
	    if(id_que == lastQuestion){
			changeActions(0, 0, strFinish, id_que);
		}else{
			changeActions(0, 0, strCommit, id_que);
		}
	}
	var totalDiv = document.getElementById('DIVTotal_' + id_que);
	totalDiv.innerHTML = "&nbsp;";
}

function EnableNextQuestion(id_que){
	var finded = false;
	for(queID in arrAnswered){
		if(queID == id_que){
			finded = true;
			continue;
		}
		if(finded){
			currentQuestion = id_que = queID;
			break;
		}
	}
	for(answerID in arrAnswersProducts[id_que]){
		var elControl = document.getElementById('id_' + answerID);
		var elLabel = document.getElementById('label_' + answerID);
		if(elLabel){
			elControl.disabled = false;
			elLabel.disabled = false;
		}else{
			//scale type
			for(var i = 0; i < arrScale_noRadios[id_que][answerID].length; i++){
				elControl = document.getElementById('id_' + answerID + arrScale_noRadios[id_que][answerID][i]);
				if(typeof(elControl) != 'undefined'){
					elControl.disabled = false;
					if(elControl.checked){
						DoSelectProducts(id_que, answerID);
					}
				}
			}
		}
	}

	var actionDiv = document.getElementById('IDAction_' + id_que);
	if(actionDiv){
		if(id_que == lastQuestion){
			changeActions(0, 1, strFinish, id_que);
		}else{
			changeActions(0, 1, strCommit, id_que);
		}		
	}	
	var totalDiv = document.getElementById('DIVTotal_' + id_que);
	totalDiv.innerHTML = arrSelectedProducts.length;
}

function DoEdit(id_que){
	RollbackSelection(currentQuestion);
	DisableQuestion(currentQuestion);
	for(var j = 0; j < arrQuestionAnswers[id_que].length; j++){
		answerID = arrQuestionAnswers[id_que][j];
		var elControl = document.getElementById('id_' + answerID);
		var elLabel = document.getElementById('label_' + answerID);
		if(!isNaN(parseInt(arrAnswersProducts[id_que][answerID]))){ 
			if(!elControl){  //scale type
				for(var i = 0; i < arrScale_noRadios[id_que][answerID].length; i++){
					elControl = document.getElementById('id_' + answerID + arrScale_noRadios[id_que][answerID][i]);
					elControl.disabled = false;
				}
			}else{
				elControl.disabled = false;
				elLabel.disabled = false;
			}	
		}else{ //does not exists products for this answer
			if(!elControl){  //scale type
				for(var i = 0; i < arrScale_noRadios[id_que][answerID].length; i++){
					elControl = document.getElementById('id_' + answerID + arrScale_noRadios[id_que][answerID][i]);
					elControl.disabled = true;
					elControl.checked = false;
				}
			}else{
				elControl.disabled = true;
				elLabel.disabled = true;
				elControl.checked = false;
			}	
		}	
	} 

	currentQuestion = id_que;
	var actionDiv = document.getElementById('IDAction_' + id_que);

	IntersectAllQuestions(id_que);

    if(id_que == lastQuestion || arrSelectedProducts.length < 3){
		changeActions(0, 1, strFinish, id_que);
	}else{
		changeActions(0, 1, strCommit, id_que);
	}		
	var totalDiv = document.getElementById('DIVTotal_' + id_que);
	totalDiv.innerHTML = arrSelectedProducts.length;
	return false;
}

function SetSavedAnswers(id_que){
	var contor = 0;
	arrSavedAnswers[id_que] = new Array();
	for(answerID in arrAnswersProducts[id_que]){
		var elControl = document.getElementById('id_' + answerID);
		if(!elControl){  //scale type
			arrSavedAnswers[id_que][contor++] = answerID;
			for(var i = 0; i < arrScale_noRadios[id_que][answerID].length; i++){
				elControl = document.getElementById('id_' + answerID + arrScale_noRadios[id_que][answerID][i]);
				if(elControl.checked){
					arrScaleSavedAnswers[id_que][answerID] = i;
					break;
				}
			}
		}else{
			if(elControl.checked){
				arrSavedAnswers[id_que][contor++] = answerID;
			}
		}	
	}	

}

function RollbackSelection(id_que){
	if(!arrAnswered[id_que]){
		for(answerID in arrAnswersProducts[id_que]){
			var elControl = document.getElementById('id_' + answerID);
			if(elControl){
				if(elControl.checked){
					elControl.checked = false;
				}
			}else{ //scale type answers
				for(var i = 0; i < arrScale_noRadios[id_que][answerID].length; i++){
					elControl = document.getElementById('id_' + answerID + arrScale_noRadios[id_que][answerID][i]);
					elControl.checked = false;
				}
			}	
		} 
		arrPartialSelected[id_que] = new Array();
	}else{
			for(answerID in arrAnswersProducts[id_que]){
			var elControl = document.getElementById('id_' + answerID);
			if(elControl){
				elControl.checked = false;
			}else{ //scale type answers
				for(var i = 0; i < arrScale_noRadios[id_que][answerID].length; i++){
					elControl = document.getElementById('id_' + answerID + arrScale_noRadios[id_que][answerID][i]);
					elControl.checked = false;
				}
			}	
		} 
		arrPartialSelected[id_que] = new Array();
		for(count in arrSavedAnswers[id_que]){
			answerID = arrSavedAnswers[id_que][count];
			elControl = document.getElementById('id_' + answerID);
			if(elControl){
				elControl.checked = true;
			}else{ //scale type answers
				for(var i = 0; i < arrScaleSavedAnswers[id_que].length; i++){
					elControl = document.getElementById('id_' + answerID + arrScaleSavedAnswers[id_que][answerID]);
					elControl.checked = true;
				}
			}	
		}
		IntersectQuestionProducts(id_que);
	}

}

function DoFinish(id_que){
	//commit current question
	var elChecked = false;
	for(answerID in arrAnswersProducts[id_que]){
		var elControl = document.getElementById('id_' + answerID);
		if(!elControl){
			for(var i = 0; i < arrScale_noRadios[id_que][answerID].length; i++){
				elControl = document.getElementById('id_' + answerID + arrScale_noRadios[id_que][answerID][i]);
				if(elControl.checked){
					elChecked = true;
					break;
				}
			}
		}else{
			if(elControl.checked){
				elChecked = true;
				break;
			}
		}	
	} 
	
	if(!elChecked){
		alert("You must select at least one answer.");
		return false;
	}
	
	SetSavedAnswers(id_que);
	arrAnswered[id_que] = 1;
	DisableQuestion(currentQuestion);
	SubmitForm();
	return false;
}

function SubmitForm(){
	var myform = document.answer;
	myform.onepage.value = "1";
	var i = 0;
	strTmp = "";
	for(i = 0; i < arrQuestions.length; i++){
		if(arrAnswered[arrQuestions[i]]){
			for(j = 0; j < arrSavedAnswers[arrQuestions[i]].length; j++){
				elControl = document.getElementById('id_' + arrSavedAnswers[arrQuestions[i]][j]);
				if(elControl){
					strTmp += '<input type="hidden" name="answers[' + arrQuestions[i] + '][' + j + ']" value="' + arrSavedAnswers[arrQuestions[i]][j] + '">'+"\n";
				}else{
					scaleSelected = 0;
					for(var k = 0; k < arrScale_noRadios[arrQuestions[i]][arrSavedAnswers[arrQuestions[i]][j]].length; k++){
						elControl = document.getElementById('id_' + arrSavedAnswers[arrQuestions[i]][j] + arrScale_noRadios[arrQuestions[i]][arrSavedAnswers[arrQuestions[i]][j]][k]);
						if(elControl.checked){
							scaleSelected = elControl.value;
							break;
						}
					}
					strTmp += '<input type="hidden" name="answers[' + arrQuestions[i] + '][' + j + ']" value="' + arrSavedAnswers[arrQuestions[i]][j] + "||" + scaleSelected + '">'+"\n";
				}		
			}	
		}	
	}
	
	for(i = 0; i < arrSelectedProducts.length; i++){
		strTmp += '<input type="hidden" name="products[]" value ="' + arrSelectedProducts[i] + '">'+"\n";
	}

	for(i = 0; i < arrQuestions.length; i++){
		if(arrQuestions[i] == currentQuestion){
			lastStep = i + 1;
		}
	}	
	strTmp += '<input type="hidden" name="laststep" value ="' + lastStep + '">'+"\n";
	
	var obj = document.getElementById("subForm");
	obj.innerHTML = strTmp;
	
	myform.submit();
	
}

function DoValidateScale(){
	var elControl;
	for(id_que in arrScaleSavedAnswers){
		for(var i = 0; i < arrQuestionAnswers[id_que].length; i++){
			if(isNaN(parseInt(arrAnswersProducts[id_que][arrQuestionAnswers[id_que][i]]))){ 
				for(var j = 1; j <= 5; j++){
					elControl = document.getElementById('id_' + arrQuestionAnswers[id_que][i] + j);
					elControl.checked = false;
				}
			}	
		}
	}
}

/**
*	Change content of question action tag
*	Params:
*     firstAction - indicates if first action is displayed as enabled
*     secondAction - indicates if second action is displayed as enabled
*     strSecondActionName - indicates the name of second action
*	id_que - id question
**/
function changeActions(firstAction, secondAction, strSecondActionName, id_que){
	var action1Content;
	var action2Content;
	var action1Span = document.getElementById('SPANAction1_' + id_que);
	var action2Span = document.getElementById('SPANAction2_' + id_que);
	if(firstAction){
		action1Content = document.getElementById('Question'+ strEdit + 'Enabled_' + id_que);
	}else{
		action1Content = document.getElementById('Question'+ strEdit + 'Disabled_' + id_que);
	}
	if(secondAction){
		action2Content = document.getElementById('Question'+ strSecondActionName + 'Enabled_' + id_que);
	}else{
		action2Content = document.getElementById('Question'+ strSecondActionName + 'Disabled_' + id_que);
	}
	action1Span.innerHTML = action1Content.innerHTML;
	action2Span.innerHTML = action2Content.innerHTML;
}

