var total = 0;
var nbTraite = 0;
var formId = "";

function verifierChamps(formId){
	var formField = document.getElementById(formId);
	
	var correct = true;
	var valeursFinale = new Array();
	var clefs = new Array();
	
	for( var i = 0; i < formField.length; i++ ) { 
		//on exclut certaines question qui sont principalement des "Autres"
		if(formField[i].name!='etape3Partage[e3S2q6]' && 
			formField[i].name!= 'etape3Droits[e3s3q5]' && 
			formField[i].name!='etape3DroitsAcces[e3s4q5]' && 
			formField[i].name!='etape3Securite[e3s5q5]' && 
			formField[i].name!='etape3Enfants[e3s8q4]' && 
			formField[i].name!='etape3InfosVersionCourte[e3q5VC]' && 
			formField[i].name!='etape3InfosVersionCourte[e3q10VC]' && 
			formField[i].name!='etape3InfosComplementaires[e3q18]' && 
			formField[i].name!='etape1InfosGenerales[coordonneesTelephoniques][coordsFax]' && 
			formField[i].name != 'etape1InfosGenerales[coordonneesTelephoniques][coordsTel]' && 
			formField[i].name != 'etape1InfosGenerales[coordonneesTelephoniques][coordsFax]' &&
			formField[i].name != 'etape3InfosComplementaires[e3ICPolice]' &&
			formField[i].name != 'etape3InfosComplementaires[e3q16]' &&
			formField[i].name != 'etape3InfosComplementaires[e3ICPratiqueSexuelles]' &&
			formField[i].name != 'etape3Partage[e3S2q5]' && formField[i].name != 'etape3InfosComplementaires[e3q18]' &&
			formField[i].name != 'etape3Formulaires[e3q23]' &&	formField[i].name != 'etape3Formulaires[e3q29]' &&
			formField[i].name != 'etape3Certification[e3s6q10]'	&& formField[i].name != 'etape3Certification[e3s6q2]' &&
			formField[i].name != 'etape3Certification[e3s6q3]' && formField[i].name != 'etape3Certification[e3s6q4]' &&
			formField[i].name != 'etape3Certification[e3s6q5]' && formField[i].name != 'etape3Certification[e3s6q7]' &&
			formField[i].name != 'etape3Interactivite[e3InterQ4]' && formField[i].name != 'etape3Interactivite[e3InterQ9]'
			){
		  if(formField[i].type.toLowerCase()=="radio"){
		  	  if(formField[i].checked===true){
		  		valeursFinale[formField[i].name] = formField[i].checked;
		  		clefs.push(formField[i].name);
			  }else{
			  	if(valeursFinale[formField[i].name]===undefined){
			  		 valeursFinale[formField[i].name] = null;
			  		 clefs.push(formField[i].name);
			  	}
			  }
		  }else{
		  	if(formField[i].type.toLowerCase()!='hidden'){
			  valeursFinale[formField[i].name] = formField[i].value;	
			  clefs.push(formField[i].name);
		  	}
		  }
		}
	}
	
	var k = 0;
	var max = clefs.length;
	while(k<max && correct===true){
		if(valeursFinale[clefs[k]]===null || valeursFinale[clefs[k]]===""){
			 correct=false;
		}
		k++;
	} 
	
	return(correct);
}

function submitFormFinal(){
	if(nbTraite==total){
		var formElement = document.getElementById(formId);
		formElement.submit();
	}
}

function onLoadFunction(){
	//fonction qui va faire ce quon aurait besoin de faire sur le onLoad
	if($('e3s6q1') && $('e3s6q1').checked==true){
		afficherElement('truste');
	}
	if($('e3s6q6Oui') && $('e3s6q6Oui').checked==true){
		afficherElement('bbbonline');
	}
	if($('e3s6q1Non') && $('e3s6q1Non').checked==true){
		cacherElement('truste');
	}
	if($('e3s6q6Non') && $('e3s6q6Non').checked==true){
		cacherElement('bbbonline');
	}
}

function submitForm(_formId, arrayPreSubmit, arrayOnSubmit, arrayPostSubmit, verificationChamps){
	//On n'oblige pas le form a verifier que tous les champs sont remplis, c'est utile par exemple dans le cas du bouton prcdent
	var tousRemplis = true;
	
	if(verificationChamps===true && _formId != "etape3Droits" && _formId != "etape3DroitsAcces" && _formId != "etape3Enfants" && _formId != "etape1InfosGenerales"){
			tousRemplis = verifierChamps(_formId);
	}
	
	if(tousRemplis===true){
		var i = 0;
		total = arrayPreSubmit.length + arrayOnSubmit.length + arrayPostSubmit.length;
		formId = _formId;
		
		//Pour l'instant seul le onSubmit est support
		//Nous allons envoyer tous les events d'une shot pour avoir un seul call a onComplete, afin de pouvoir faire le form.submit apres.
		//On pourrait aussi y aller avec un delay mais...
		var max = arrayPreSubmit.length;
		for(i=0;i<max;i++){
			sendEventForm(arrayPreSubmit[i][0],arrayPreSubmit[i][1],arrayPreSubmit[i][2],arrayPreSubmit[i][3]);
		}
		
		max = arrayOnSubmit.length;
		for(i=0;i<max;i++){
			sendEventForm(arrayOnSubmit[i][0],arrayOnSubmit[i][1],arrayOnSubmit[i][2],arrayOnSubmit[i][3]);
		}
		
		max = arrayPostSubmit.length;
		for(i=0;i<max;i++){
			sendEventForm(arrayPostSubmit[i][0],arrayPostSubmit[i][1],arrayPostSubmit[i][2],arrayPostSubmit[i][3]);
		}
		if(total===0){
			submitFormFinal();
		}
	}else{
		faireAvertissement('<h2>Attention!</h2>Tous les champs du questionnaire ne sont pas remplis!<br /><br /> <div class="bouton"><a href="#" class="btn_retour2" onclick="Dialog.okCallback()"></a></div>',undefined,350,140);
	}
}

function changeFieldValue(field,value){
	var actionField = document.getElementById(field);
	actionField.setAttribute('value',value);	
}

function sendEvent(_id,_formId,_questionId,_value){
	 var communication = new Ajax.Request('events.php',{method: 'post',	parameters:{id:_id,formId:_formId,questionId:_questionId,value:_value},onSuccess: function(transport){},onFailure: function(){alert("failed...");},	onComplete: function(param){completeMoiCa(param);}});
}

function sendEventForm(_id,_formId,_questionId,_value){
	//Meme chose que la fonction precedente sauf que le onComplete va compter en plus le nombre d'event traits
	var communication = new Ajax.Request('events.php',{method: 'post',parameters:{id:_id,formId:_formId,questionId:_questionId,value:_value},onSuccess: function(transport){	},onFailure: function(){alert("failed...");	},onComplete: function(param){completeMoiCaForm(param);}});
	
}

function completeMoiCa(param){
	if(param.responseText) {
		if(param.responseText.slice(0,10)=='javascript'){
			var fonctions = param.responseText.split(" %>>>");
			var i=0;
			var max = fonctions.length;
			for (i=0;i<max;i++){
				var params = fonctions[i].split("||");
				var functionName = params[0].split(":")[1];
				if(functionName!==undefined){
					eval(functionName)(params[1]);
				}	
			}
		}		
	}
}

function completeMoiCaForm(param,okCompleteFunction){
	if(param.responseText) {
		if(param.responseText.slice(0,10)=='javascript'){
			var fonctions = param.responseText.split(" %>>>");
			var i=0;
			var max = fonctions.length;
			for (i=0;i<max;i++){
				var params = fonctions[i].split("||");
				var functionName = params[0].split(":")[1];
				if(functionName!==undefined){
					if(okCompleteFunction===undefined){ okCompleteFunction="okCompleteForm";}
					eval(functionName)(params[1],okCompleteFunction);	
				}
			}
		}		
	}
	submitFormFinal();
}

function faireAvertissement(html,onOkFunction,_width,_height){
	if(_width===undefined) _width=600;
	if(_height===undefined) _height = 300;
	Dialog.confirm(html,
		{width:_width,
		height:_height, 
		buttonClass: "boutonAvertissement", 
		className: "alphacube",
		id: "avertissement"+Math.floor(Math.random()*1010),
		destroyOnClose: true,
		onOk:function(win){ 
				if(onOkFunction===undefined){
					return(true);
				}else{
					eval(onOkFunction)();
				}
			},
		onCancel:function(win){ return(true);}
		}
	);
}

function demanderDefinition(_word){
	var communication = new Ajax.Request('definitions.php',
		{
			method: 'post',
			parameters:{word:_word},
			onSuccess: function(transport){
			},
			onFailure: function(){
				alert("failed...");
			},
			onComplete: function(param){
				afficherDefinition(param,_word);
			}
		});
}

function demanderForm(formId){
	var communication = new Ajax.Request('definitions.php',
	{
		method:'post',
		parameters:{action:'demanderForm', formId:formId},
		onComplete: function(param){
				afficherDefinition(param);
			}
	}
	);
}

function afficherDefinition(param,word){
	var win = new Window(
	{className: "alphacube", width:440, height:275, zIndex: 100, resizable: true, title: '', 
	showEffect:Effect.BlindDown, hideEffect: Effect.SwitchOff, draggable:true, wiredDrag: true}) ;
	win.getContent().innerHTML= param.responseText;
	win.showCenter(); 
}

function okCompleteForm(){
	nbTraite++;
	submitFormFinal();
	return(true);
}

function afficherEnvoieEmail(){
	var communication = new Ajax.Request('questionnaire.php',
		{
			method: 'post',
			parameters:{action:"getContent",content:"envoieEmail"},
			onComplete: function(param){
				afficherEnvoieEmailSuccess(param);
			}
		});
}
function afficherImportXml(){
	var communication = new Ajax.Request('questionnaire.php',
		{
			method: 'post',
			parameters:{action:"getContent",content:"importerFichier"},
			onComplete: function(param){
				afficherImportXmlSuccess(param);
			}
		});
}
function afficherEnvoieEmailSuccess(param){
	var win = new Window(
					{className: "alphacube", width:290, height:38, zIndex: 100, resizable: false,maximizable:false,minimizable:false, title: 'Envoyer la politique mod&egrave;le par courriel', 
					showEffect:Effect.SlideDown, hideEffect: Effect.SwitchOff, draggable:true, wiredDrag: false}) ;
	win.getContent().innerHTML= param.responseText;
	win.showCenter(); 
}
function afficherImportXmlSuccess(param){
	var win = new Window({className: "alphacube", width:450, height:40, zIndex: 100, resizable: false,maximizable:false,minimizable:false, title: 'Importer un fichier XML', showEffect:Effect.SlideDown, hideEffect: Effect.SwitchOff, draggable:true, wiredDrag: false}) ;
	win.getContent().innerHTML= param.responseText;
	win.showCenter(); 
}

function afficherMessage(message){
	Dialog.alert(message,{width:300, height:100, okLabel:"Ok",className: "alphacube"});
}

function setCheckedValue(inputId) {
	radioObj = $(inputId);
	radioObj.checked = true;
}

function afficherElement(inputId) {
	$(inputId).style.display = "block";
}

function cacherElement(inputId) {
	$(inputId).style.display = "none";
}
