var verrou = false;

/**
 * Execute la soumission d'un formulaire
 * 
 * Paramètres : formname - le nom du formulaire à soumettre action - l'action du
 * formulaire
 */
function execSubmitForm(action, controlOk, formName) {
	
	if(controlOk == null){
		controlOk = true;
	}
	
	var form;	
	if (formName != null) {
		form = document.forms[formName];
	} else {
		form = document.forms[0];
	}

	if (!verrou && controlOk && form != null) {
		afficheSablier();
		form.onsubmit = "return true";
		form.action = action;
		form.target = "_self";
		verrou = true;
		form.submit();	
	}
}

/**
 * Fonction de préparation à la soumission d'un formulaire
 * 
 * Paramètres : formname - le nom du formulaire à soumettre action - l'action du
 * formulaire
 */
function prepareSubmitForm(action, controlOk, formName) {

	if(controlOk == null){
		controlOk = true;
	}
	
	var form;	
	if (formName != null) {
		form = document.forms[formName];
	} else {
		form = document.forms[0];
	}

	if (!verrou && controlOk && form != null) {
		afficheSablier();
		form.onsubmit = "return true";
		form.action = action;		
		form.target = "_self";	
		verrou = true;
	}	
}


//Affiche le sablier...
function afficheSablierSimple() {
	var monDiv = document.getElementById("wait");	
	if (monDiv) {		
		monDiv.style.display = 'block';
	}	
}

//variable locale pour eviter les probleme de perte d objet a cause des popups
var divSablier;

//Affiche le sablier apres un delai min et pendant un delai max...
function afficheSablier() {	
	divSablier = document.getElementById("wait");	
	setTimeout("afficheSablierSimple()", 500);	
}

function controlFormatPassword(obj) {
	var result = true;
	$(obj).find('input:password').each(
		function(j) {
			var valeur = $(this).val();
			if (valeur != null && valeur !='') {
				if (valeur.length < 6 || !isNaN(valeur) 
						|| valeur.toLowerCase() == valeur
						|| valeur.toUpperCase() == valeur) {
					result = false;
				}				
			}
		});
	return result;
}

function controlFormatInteger(obj) {
	var result = true;
	$(obj).find('input:text').each(
		function(j) {
			if ($(this).val() != null && $(this).val() !='') {
				if (isNaN($(this).val())) {
					result = false;
				}				
			}
		});
	return result;
}

function controlFormatTva(obj) {
	var result = true;
	$(obj).find('input:text').each(
		function(j) {
			if ($(this).val() != null && $(this).val() !='') {
				var valeur = $(this).val();
				
				if (isNaN(valeur)) {
					result = false;
				}
				
				if (valeur.length != 11) {
					result = false;
				}
			}
		});
	return result;
}

function controlFormatEmail(obj) {
	var result = true;
	$(obj).find('input:text').each(
		function(j) {
			var valeur = $(this).val();
			if (valeur != null && valeur !='') {
				var index = valeur.indexOf("@");
				if (index == -1 || valeur.indexOf(".", index) == -1) {
					result = false;
				}				
			}
		});
	return result;
}

function controlFormatNumTel(obj) {
	var result = true;
	$(obj).find('input:text').each(
		function(j) {
			var valeur = $(this).val();			
			if (valeur != null && valeur !='') {
				valeur = valeur.replace('.', '');
				valeur = valeur.replace('.', '');
				valeur = valeur.replace('.', '');
				valeur = valeur.replace('.', '');
				valeur = valeur.replace(' ', '');
				valeur = valeur.replace(' ', '');
				valeur = valeur.replace(' ', '');
				valeur = valeur.replace(' ', '');
				if (valeur.length != 10 
						|| isNaN(valeur)) {
					result = false;
				}
				
				if (valeur.length > 10) {
					valeur = valeur.substring(0, 10);
				}
				
				if (valeur.length == 10) {
					valeur = valeur.substring(0, 2) + '.' + valeur.substring(2, 4) 
					+ '.' + valeur.substring(4, 6)
					+ '.' + valeur.substring(6, 8) + '.' + valeur.substring(8);
					$(this).val(valeur);
				}
			}
			
		});
	return result;
}

function controlRadio(obj){
	var nbrChecked = 0;
	nbrChecked = $(obj).find('input:radio:checked').length;
	var result = false;
	if (nbrChecked > 0) {
		 result = true;
	}	
	return result;
}

function hideAllErreur() {
	
	$("#actionError").hide();
	$("#errorOblig").hide();	
	$("#errorCheck").hide();
	
	$("#errorPassword").hide();
	$("#errorInteger").hide();
	$("#errorEmail").hide();
	$("#errorNumTel").hide();
}

function jValidate() {
	var validationOk = true;
	var msgError = '';
	hideAllErreur();
	$(".oblig").each( function() {
		var valide = isSet(this, 'select');
		msgError = marquage(this, msgError, valide, 'errorOblig');
		if (valide) {
			valide = isSet(this, 'input:text');
			msgError = marquage(this, msgError, valide, 'errorOblig');
		}
		if (valide) {
			valide = isSet(this, 'textarea');
			msgError = marquage(this, msgError, valide, 'errorOblig');
		}
		if (valide) {
			valide = isSet(this, 'input:password');
			msgError = marquage(this, msgError, valide, 'errorOblig');
			if (valide) {
				valide = controlFormatPassword(this);
				msgError = marquage(this, msgError, valide, 'errorPassword');
			}
		}
		
		if (!valide) {
			validationOk = false;
		}
	});
	
	$(".facultPassword").each( function() {
		var valide = controlFormatPassword(this);
		msgError = marquage(this, msgError, valide, 'errorPassword');
		
		if (!valide) {
			validationOk = false;
		}
	});
	
	$(".obligInteger").each( function() {
		var valide = isSet(this, 'input:text');
		msgError = marquage(this, msgError, valide, 'errorOblig');
				
		if (valide) {
			valide = controlFormatInteger(this);
			msgError = marquage(this, msgError, valide, 'errorInteger');
		}
		
		if (!valide) {
			validationOk = false;
		}
		
	});
	
	$(".obligTva").each( function() {
		var valide = isSet(this, 'input:text');
		msgError = marquage(this, msgError, valide, 'errorOblig');
				
		if (valide) {
			valide = controlFormatTva(this);			
			msgError = marquage(this, msgError, valide, 'errorTva');
		}
		
		if (!valide) {
			validationOk = false;
		}
		
	});
	
	$(".facultInteger").each( function() {
		valide = controlFormatInteger(this);
		msgError = marquage(this, msgError, valide, 'errorInteger');
		
		if (!valide) {
			validationOk = false;
		}
	});
	
	$(".obligEmail").each( function() {
		var valide = isSet(this, 'input:text');
		msgError = marquage(this, msgError, valide, 'errorOblig');
				
		if (valide) {
			valide = controlFormatEmail(this);
			msgError = marquage(this, msgError, valide, 'errorEmail');
		}
		
		if (!valide) {
			validationOk = false;
		}
	});
	
	$(".obligNumTel").each( function() {
		var valide = isSet(this, 'input:text');
		msgError = marquage(this, msgError, valide, 'errorOblig');
				
		if (valide) {
			valide = controlFormatNumTel(this);
			msgError = marquage(this, msgError, valide, 'errorNumTel');
		}
		
		if (!valide) {
			validationOk = false;
		}
	});
	
	$(".facultNumTel").each( function() {
		valide = controlFormatNumTel(this);
		msgError = marquage(this, msgError, valide, 'errorNumTel');
		
		if (!valide) {
			validationOk = false;
		}
	});
	
	$(".obligRadio").each( function() {
		var valide = controlRadio(this);
		msgError = marquage(this, msgError, valide, 'errorCheckCase');
		
		if (!valide) {
			validationOk = false;
		}
	});

	if (validationOk) {
		$("#errorValidate").html('');
	} else {
		$("#errorValidate").html(msgError);
	}

	return validationOk;
}

function marquage(obj, msgError, validation, idMsgGeneric) {
	if (!validation) {
		$(obj).css("border", "1px solid red");
		msgError = getMsgErreur(obj, msgError);
		$("#" + idMsgGeneric).show();
	} else {
		$(obj).css("border", "0px solid white");
	}
	return msgError;
}

function ajoutMsgError(msgOld, msgAdd) {
	if (msgOld != null && msgOld != '') {
		if (msgAdd != null && msgAdd != '') {
			msgOld = msgOld + '<br>' + msgAdd;
		}
	} else {
		msgOld = msgAdd;
	}
	return msgOld;
}

function getMsgErreur(obj, msgError) {
	$(obj).find('input:hidden').each( function() {
		if ($(this).attr("id") == "msg") {
			msgError = ajoutMsgError(msgError, $(this).val());
		}
	});
	return msgError;
}

function isSet(obj, idClass) {
	var result = true;
	$(obj).find(idClass).each(
			function(j) {
				if ($(this).val() == null || $(this).val() == ''
						|| $(this).val() == '-1') {
					result = false;
				}
			});
	return result;
}

/**
 * Determine si un des bouton radio est cocher dans objet HTML
 * 
 * @param id identifiant de l'objet (ex: table, div...)
 * @return
 */
function isChecked(id){
	hideAllErreur();
	var nbrChecked = 0;
	nbrChecked = $("#"+id+" input:radio:checked").length;
	var result = false;
	if (nbrChecked > 0) {
		 result = true;
	}
	if (!result) {
		$("#errorCheck").show();
	}
	return result;
}

function onMouseOver(obj){
	var source = obj.src;
	source = source.replace("_plein", "_creux");	
	obj.src = source;
}

function onMouseOut(obj){
	var source = obj.src;
	source = source.replace("_creux", "_plein");	
	obj.src = source;
}


