var qs_StepCurrent=1;
var qs_TotalSteps=-1;
var qsroot = null;
function SetupQuestions()
{
	var urlQuest="/templates/364005C6-61C8-477B-8BD2-894497CAF69D/javascript/questionnaire.xml";
	var loader = $s("loaderQuestion");
	if(loader==null)return;
	
	loader.innerHTML="";
	
	var xmlhttp = new XMLHttpRequest();  
	xmlhttp.open("GET", urlQuest, false);  
	xmlhttp.send('');
	qsroot = xmlhttp.responseXML;
	
	if(qsroot==null)return;

	qs_ExecuteStepCall(qs_StepCurrent);
	
	
}

function qs_ExecuteStepCall(step)
{
	var steps = qs_Get(qs_Get(qsroot,"steps"),"step");
	qs_TotalSteps=steps.length;
	for(i=0;i<qs_TotalSteps;i++)
	{
		if(steps[i].getAttribute("id")==step)
		{
			eval("qs_"+steps[i].getAttribute("run")+"()");
			break;
		}
	}
}

function GotoStep(step)
{
	if(qs_StepCurrent+1<=qs_TotalSteps)
	{
		qs_StepCurrent++;
		qs_ClearAndSetVisuals(qs_StepCurrent);
		qs_ExecuteStepCall(qs_StepCurrent);
	}		
}

function Answer(yes)
{
	if(qs_ArrQuestions[qs_QuestionCurrent]["log"]===null)
	{
		qs_ArrQuestions[qs_QuestionCurrent]["log"]=true;
		LogGoogle('/testorientation/etape'+((qs_QuestionCurrent+1>9)?(qs_QuestionCurrent+1):("0"+(qs_QuestionCurrent+1))));
	}
	if(yes)
	{
		$s("qsAnswerYes").className="activeAnswer";
		$s("qsAnswerNo").className="";
		qs_ArrQuestions[qs_QuestionCurrent]["reponse"]=true;
		$s("qsAnswerYes").blur();
	}
	else
	{
		$s("qsAnswerNo").className="activeAnswer";
		$s("qsAnswerYes").className="";
		qs_ArrQuestions[qs_QuestionCurrent]["reponse"]=false;
		$s("qsAnswerNo").blur();
	}
	qs_ToggleNavigation(true);
	
}

function LogGoogle(codeword)
{
	//$l(codeword);
	pageTracker._trackPageview(codeword);
}
function SetGoogleVar(varcode)
{
	//$l(varcode);
	pageTracker._setVar(varcode);
}

function MoveQuestion(upOne)
{
	if(upOne && $s("gsQuestionNext").className=="disabled")
		return;
	if(!upOne && $s("gsQuestionBack").className=="disabled")	
		return;
		
	var lastId=qs_QuestionCurrent;
	if(upOne && qs_QuestionCurrent!=(qs_ArrQuestions.length-1))
	{
		qs_QuestionCurrent++;
	}
	else if(!upOne && qs_QuestionCurrent!=0)
	{
		qs_QuestionCurrent--;
	}
	else if(upOne && qs_QuestionCurrent==(qs_ArrQuestions.length-1))
	{
		GotoStep(3);//Show RESULTS
		LogGoogle('/testorientation/resultats');
		SetGoogleVar('visiteurAyantCompleteTestOrientation');
		return;
	}
	else
	{
		return;
	}
		
	
	
	$s("qsQ"+lastId).style.display="none";
	$s("qsQ"+qs_QuestionCurrent).style.display="block";
	
	$s("qsAnswerYes").className="";
	$s("qsAnswerNo").className="";

	if(qs_ArrQuestions[qs_QuestionCurrent]["reponse"]!=null)
	{
		if(qs_ArrQuestions[qs_QuestionCurrent]["reponse"])
			$s("qsAnswerYes").className="activeAnswer";
		else
			$s("qsAnswerNo").className="activeAnswer";
	}
	
	qs_ToggleNavigation(false);
	qs_UpdateProgress();
}

function SelectStep(step)
{

}	

function qs_ToggleNavigation(triggeredAnswer)
{
	if(triggeredAnswer)
	{
		if(qs_QuestionCurrent==(qs_ArrQuestions.length-1))
		{
			//RESULTS
			$s("gsQuestionNext").className="";
		}
		else
		{
			$s("gsQuestionNext").className="";
			if(qs_QuestionCurrent-1>=0)
				$s("gsQuestionBack").className="";
			else
				$s("gsQuestionBack").className="disabled";
		}
	}
	else
	{
		
		if((qs_QuestionCurrent+1)<(qs_ArrQuestions.length-1))
		{
			
			if(qs_ArrQuestions[qs_QuestionCurrent+1]["reponse"]==null && qs_ArrQuestions[qs_QuestionCurrent]["reponse"]==null)
				$s("gsQuestionNext").className="disabled";
			else
				$s("gsQuestionNext").className="";
		}
		if(qs_QuestionCurrent==(qs_ArrQuestions.length-1)) //last question
			$s("gsQuestionNext").className="disabled";
		
		if(qs_QuestionCurrent-1>=0)
			$s("gsQuestionBack").className="";
		else
			$s("gsQuestionBack").className="disabled";
	}
	
}

var maxProg=574;/* width in pixels equal to 100% */
function qs_UpdateProgress()
{	
	var percent = (qs_QuestionCurrent+1)/qs_ArrQuestions.length;
	$s("qsBar").style.width=Math.ceil(percent*maxProg)+'px';
	if((qs_QuestionCurrent+1)==qs_ArrQuestions.length)
		$s("qsProgress").className="end";
	else
		$s("qsProgress").className="";
}

/* CONTENT GENERATION */
function qs_GenerateIntro()
{
	var template=qs_Get(qsroot,"template");
	var holder = $s("loaderQuestion");
	//add content from templates
	qs_AppendTextAsHTML(holder,qs_GetByAttribute(template,"id","header").childNodes);
	qs_AppendTextAsHTML(holder,qs_GetByAttribute(template,"id","stepSelector").childNodes);
	qs_AppendTextAsHTML(holder,qs_GetByAttribute(template,"id","introduction").childNodes);
	
}


function qs_GenerateQuestions()
{
	var template=qs_Get(qsroot,"template");
	var holder = $s("qsBox");
	//add content from templates
	qs_AppendTextAsHTML(holder,qs_GetByAttribute(template,"id","questionHeader").childNodes);
	qs_AppendNodes(holder,qs_GenerateQuestionList());
	qs_AppendTextAsHTML(holder,qs_GetByAttribute(template,"id","answerSelectors").childNodes);
	qs_AppendTextAsHTML(holder,qs_GetByAttribute(template,"id","progressBar").childNodes);
	qs_AppendTextAsHTML(holder,qs_GetByAttribute(template,"id","questionNavigation").childNodes);
	
	
}

var qs_ArrQuestions=new Array();
var qs_QuestionCurrent=0;
function qs_GenerateQuestionList()
{
	var qList = document.createElement("DIV");
	var questions=qs_Get(qsroot,"question");
	var totalQuestions=questions.length;
	var questionWrapper=null;
	var num=null;
	var txtQues=null;
	var cptQuestion=1;
	for(q=0;q<totalQuestions;q++)
	{
		var valeurs = new Array();
		valeurs["adm"]=questions[q].getAttribute("adm");
		valeurs["art"]=questions[q].getAttribute("art");
		valeurs["edu"]=questions[q].getAttribute("edu");
		valeurs["ind"]=questions[q].getAttribute("ind");
		valeurs["ser"]=questions[q].getAttribute("ser");
		valeurs["hum"]=questions[q].getAttribute("hum");
		valeurs["contenu"]=questions[q].getAttribute("content");
		valeurs["reponse"]=null;
		valeurs["log"]=null;
		
		
		qs_ArrQuestions.push(valeurs);
		
		questionWrapper = document.createElement("DIV");
		questionWrapper.className="qsQsWrp";
		
		num = document.createElement("DIV");
		num.className="numeroQuestion";
		num.innerHTML="#"+(cptQuestion);
		cptQuestion++;
		questionWrapper.appendChild(num);
		
		txtQues = document.createElement("DIV");
		txtQues.className="txtQuestion";
		txtQues.innerHTML=questions[q].getAttribute("content");
		questionWrapper.appendChild(txtQues);
		
		if(q>0)
		{questionWrapper.style.display="none";}
		questionWrapper.id="qsQ"+q;
		qList.appendChild(questionWrapper);
	}
	
	return qList.childNodes;
}

function qs_GenerateResults()
{
	var template=qs_Get(qsroot,"template");
	var holder = $s("qsBox");
	
	
	qs_AppendTextAsHTML(holder,qs_GetByAttribute(template,"id","reponseHeader").childNodes);
	qs_GenerateDiagrams();	
	qs_AppendNodes(holder,qs_GenerateReponses());

}

function qs_GenerateDiagrams()
{
	
	var totalDomaine_adm=0,totalDomaine_art=0,totalDomaine_edu=0,totalDomaine_ind=0,totalDomaine_ser=0,totalDomaine_hum=0;
	var reponsesUser_adm=0,reponsesUser_art=0,reponsesUser_edu=0,reponsesUser_ind=0,reponsesUser_ser=0,reponsesUser_hum=0;
	for(res=0;res<qs_ArrQuestions.length;res++)
	{
		
		totalDomaine_adm+=parseInt(qs_ArrQuestions[res]["adm"]);
		totalDomaine_art+=parseInt(qs_ArrQuestions[res]["art"]);
		totalDomaine_edu+=parseInt(qs_ArrQuestions[res]["edu"]);
		totalDomaine_ind+=parseInt(qs_ArrQuestions[res]["ind"]);
		totalDomaine_ser+=parseInt(qs_ArrQuestions[res]["ser"]);
		totalDomaine_hum+=parseInt(qs_ArrQuestions[res]["hum"]);
		
		if(qs_ArrQuestions[res]["reponse"]==true)
		{
			
			reponsesUser_adm+=parseInt(qs_ArrQuestions[res]["adm"]);
			reponsesUser_art+=parseInt(qs_ArrQuestions[res]["art"]);
			reponsesUser_edu+=parseInt(qs_ArrQuestions[res]["edu"]);
			reponsesUser_ind+=parseInt(qs_ArrQuestions[res]["ind"]);
			reponsesUser_ser+=parseInt(qs_ArrQuestions[res]["ser"]);
			reponsesUser_hum+=parseInt(qs_ArrQuestions[res]["hum"]);
		}
		
	}
	var totalUserDom_adm=0,totalUserDom_art=0,totalUserDom_edu=0,totalUserDom_ind=0,totalUserDom_ser=0,totalUserDom_hum=0;
	
	totalUserDom_adm=Math.ceil(100*(reponsesUser_adm/totalDomaine_adm));
	totalUserDom_art=Math.ceil(100*(reponsesUser_art/totalDomaine_art));
	totalUserDom_edu=Math.ceil(100*(reponsesUser_edu/totalDomaine_edu));
	totalUserDom_ind=Math.ceil(100*(reponsesUser_ind/totalDomaine_ind));
	totalUserDom_ser=Math.ceil(100*(reponsesUser_ser/totalDomaine_ser));
	totalUserDom_hum=Math.ceil(100*(reponsesUser_hum/totalDomaine_hum));
	
	var maxDiag=340;
	$s("qsRes_adm").innerHTML="<div style='width:"+Math.ceil((maxDiag*totalUserDom_adm)/100)+"px'>"+totalUserDom_adm+"%</div>";
	$s("qsRes_art").innerHTML="<div style='width:"+Math.ceil((maxDiag*totalUserDom_art)/100)+"px'>"+totalUserDom_art+"%</div>";
	$s("qsRes_edu").innerHTML="<div style='width:"+Math.ceil((maxDiag*totalUserDom_edu)/100)+"px'>"+totalUserDom_edu+"%</div>";
	$s("qsRes_ind").innerHTML="<div style='width:"+Math.ceil((maxDiag*totalUserDom_ind)/100)+"px'>"+totalUserDom_ind+"%</div>";
	$s("qsRes_ser").innerHTML="<div style='width:"+Math.ceil((maxDiag*totalUserDom_ser)/100)+"px'>"+totalUserDom_ser+"%</div>";
	$s("qsRes_hum").innerHTML="<div style='width:"+Math.ceil((maxDiag*totalUserDom_hum)/100)+"px'>"+totalUserDom_hum+"%</div>";
	
	
	var resultsSort = new Array();
	$s("qsDom_adm").className=totalUserDom_adm;
	$s("qsDom_art").className=totalUserDom_art;
	$s("qsDom_edu").className=totalUserDom_edu;
	$s("qsDom_ind").className=totalUserDom_ind;
	$s("qsDom_ser").className=totalUserDom_ser;
	$s("qsDom_hum").className=totalUserDom_hum;
	
	
	resultsSort.push(totalUserDom_adm);
	resultsSort.push(totalUserDom_art);
	resultsSort.push(totalUserDom_edu);
	resultsSort.push(totalUserDom_ind);
	resultsSort.push(totalUserDom_ser);
	resultsSort.push(totalUserDom_hum);
	resultsSort.sort(qs_SortNumericDesc);
	
	var divsDom=$s("qsResultats").getElementsByTagName("DIV")[0].getElementsByTagName("DIV");
	for(i=0;i<divsDom.length;i++)
	{
		if(divsDom[i].id.indexOf("qsDom")>-1)
		{
			if(divsDom[i].className==resultsSort[0] || divsDom[i].className==resultsSort[1] || divsDom[i].className==resultsSort[2])
			{
				divsDom[i].className="domSel";
				$s(divsDom[i].id.replace("qsDom","qsRes")).className="domSel";
				divsDom[i].onclick=function(a){return function(){qs_OpenSuggestion(a);};}(divsDom[i].id);
			}
		}
	}
	
}

function qs_GenerateReponses()
{
	var holder = document.createElement("DIV")
	var question=null;
	
	for(i=0;i<qs_ArrQuestions.length;i++)
	{
		
		question=document.createElement("DIV");
		question.className="qlist";
		question.innerHTML="<span class='numlist'>#"+(i+1)+"</span><span class='clist'>"+qs_ArrQuestions[i]["contenu"]+"</span><span class='replist'>"+((qs_ArrQuestions[i]["reponse"]==true)?"oui":"non")+"</span>";
		holder.appendChild(question);
	}
	
	return holder.childNodes;
}


function qs_OpenSuggestion(id)
{
	if($s(id+"_sug").style.display!="block")
	{
		$s(id+"_sug").style.display="block";
		$s(id).className="domSelA";
	}
	else
	{
		$s(id+"_sug").style.display="none";
		$s(id).className="domSel";
	}
}

function qs_SortNumericDesc(numA,numB)
{
	return numB-numA;
}

function qs_fill()
{
	for(qs=0;qs<qs_ArrQuestions.length;qs++)
		qs_ArrQuestions[qs]["reponse"]=(qs%2==0);
	GotoStep(3);
}

/* MANIPULATION */


function qs_ClearAndSetVisuals(step)
{
	var template=qs_Get(qsroot,"template");
	var holder = $s("qsBox");
	holder.innerHTML="";
	qs_AppendTextAsHTML(holder,qs_GetByAttribute(template,"id","stepArrow").childNodes);
	qs_ReplaceInHTML(holder,"stepQuestion",step);
	$s("qsSelector").className="selector_"+qs_StepCurrent;
	$s("qsBox").className="box_"+qs_StepCurrent;
}


function qs_Get(obj,node)
{
	var arr = obj.getElementsByTagName(node);
	if(arr.length==1)
		return arr[0];
	return arr;
}

function qs_GetByAttribute(obj,att,value)
{
	for(objE=0;objE<obj.length;objE++)
	{
		if(obj[objE].getAttribute(att)==value)
			return obj[objE]
	}
	return null;
}

function qs_AppendTextAsHTML(objTo,objFrom)
{
	
	for(objN=0;objN<objFrom.length;objN++)
	{
		objTo.innerHTML+=objFrom[objN].nodeValue;
	}
}

function qs_AppendNodes(objToNode,objFromNode)
{

	var clonedNode=null;
	for(objNode=0;objNode<objFromNode.length;objNode++)
	{	
		clonedNode=objFromNode[objNode].cloneNode(true);
		objToNode.appendChild(clonedNode);
	}
}

function qs_ReplaceInHTML(objHTML,before,after)
{
	objHTML.innerHTML = objHTML.innerHTML.replace(before,after);
}	

function $l(obj)
{
	try
	{
	return console.log(obj);
	}
	catch(e)
	{
	
	}
}
