// JavaScript Document
function formToParam(idForm) {
	var tblParam = new Array();
	var iParam = 0;
	$("#"+idForm + " input:text").each(function(){ tblParam[iParam++] = $(this).attr("id") + "=" + $(this).val(); });
    $("#"+idForm + " input:hidden").each(function(){tblParam[iParam++] = $(this).attr("id") + "=" + $(this).val();});
	$("#"+idForm + " input:checkbox").each(function(){ tblParam[iParam++] = $(this).attr("id") + "=" + ($(this).attr("checked") ? "1" : "0"); });
	$("#"+idForm + " input:radio").each(function(){ if($(this).attr("checked")) tblParam[iParam++] = $(this).attr("name") + "=" + $(this).val(); });
	$("#"+idForm + " textarea").each(function(){ tblParam[iParam++] = $(this).attr("id") + "=" + $(this).val();	});	
	$("#"+idForm + " select").each(function(){ tblParam[iParam++] = $(this).attr("id") + "=" + $(this).val();	});
	return tblParam.join("&");
}

function controlValue(val, typ) {
	var statut = true;
	if(val == "")
		return true;
	else {
	switch(typ) {
		case "text" : 
			
		break;
		case "decimal" : 
			statut = (val.match(/([+-]?)(\d+)[,.]?(\d*)/g));
		break;
		case "tel" : 
			statut = (val.match(/^([0-9.-])*$/g));
		break;
		case "integer" : 
			statut = (val.match(/([+-]?)([0-9]+)/g));
		break;
		case "mail" : 
			statut = (val.match(/^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z]+)*\.[a-z]{2,4}$/g) );
		break;
		case "url" :
			statut = (val.match(/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/g) );
		break;
	}
	return statut;
	}
}

function typeControle(id) {
	var $obj = $("#" + id);
	if($obj.hasClass("text")) type = "text";
	else if($obj.hasClass("integer")) type = "integer";		
	else if($obj.hasClass("mail")) type = "mail";		
	else if($obj.hasClass("tel")) type = "tel";
	else if($obj.hasClass("decimal")) type = "decimal";
	else if($obj.hasClass("url")) type = "url";
	else  type = "default";
	return type;
}

function controlValueForm(idForm){
		var $this = $(this);
	var statutGene = true;
	
	
	
	var type = "";
	$("#"+idForm + " input:text").each(function(){
		var statut = true;
		type = typeControle( $(this).attr("id") );
		statut = statut && controlValue( $(this).val(), type);
		if($(this).hasClass("required")) { statut = statut && ( $(this).val() != ""); }
		var $objSpan = $(this).next("span.statut");
		if(statut) {
			$objSpan.removeClass("ctrlNok");
			if($(this).hasClass("required")) $objSpan.addClass("ctrlOk");
			$(this).css("border-color", "#000");
		}
		else {
			$objSpan.removeClass("ctrlOk").addClass("ctrlNok");
			// $(this).css("background-color", "#FFC1C1");
			$(this).css("border-color", "#F60");
		}
		statutGene = statutGene && statut;
	});
	
	
	$("#"+idForm + " select").each(function(){
		var statut = true;
		if($(this).hasClass("required")) statut =( this.options.length > 0); 
		var $objSpan = $(this).next("span.statut");
		if(statut) {
			$objSpan.removeClass("ctrlNok");
			if($(this).hasClass("required")) $objSpan.addClass("ctrlOk");
			$(this).css("border-color", "#000");
		}
		else {
			$objSpan.removeClass("ctrlOk").addClass("ctrlNok");
			// $(this).css("background-color", "#FFC1C1");
			$(this).css("border-color", "#F60");
		}
		statutGene = statutGene && statut;
	});
	
	$("#"+idForm + " textarea").each(function(){
		var statut = true;
		type = typeControle( $(this).attr("id") );								
		statut = statut && controlValue( $(this).val(), type);
		if($(this).hasClass("required")) { statut = statut && ( $(this).val() != ""); }
		var $objSpan = $(this).parent("div").prev("div").find("span.statut");
		if(statut) {
			
			$objSpan.removeClass("ctrlNok");
			if($(this).hasClass("required")) $objSpan.addClass("ctrlOk");
			$(this).css("border-color", "#000");
		}
		else {
			$objSpan.removeClass("ctrlOk").addClass("ctrlNok");
			// $(this).css("background-color", "#FFC1C1");
			$(this).css("border-color", "#F60");
		}
		statutGene = statutGene && statut;
	});
	
	$(".tab").each( function() {
		var idTab = $(this).attr("id");		
		var tbl = idTab.split("-");
		$("#tabHeader-"+tbl[1]).css("color", ( $(".ctrlNok", $("#"+idTab) ).length>0?'red':'black' ));
							 
	} );
	return statutGene;
	
}


function controlForm(idForm){
	
	var statutGene = controlValueForm(idForm);
	
	if(statutGene) {
		
		if(  document.getElementById("jform-iframesubmit") ) {
			enableAll(idForm);
			//alert("enableAll");
			 $("#"+idForm).submit();
		}
		else {
			var urlPhp =  $("#"+idForm).attr("action");
			$.ajax({
				type: "POST",
				url: urlPhp,
				data: formToParam(idForm),
				success: function(data) {
					if( document.getElementById("jdtgrid-dataContener") != null) {
						// Context GRID
						$("#jdtgrid-dataContener").html(data);
						initForm();
						/*alert(data);*/
						
						$.getScript(urlPhp.replace('.php', '.js'), function(){ $.getCSS(urlPhp.replace('.php', '.css'), {}, function(){ });	});	
						$("#jform-backgroundtransition").fadeOut(800);	
						reloadRow();
						
					}
					else {
						// Context FORMULAIRE
						$("#divContent").html(data);
						$.getScript(urlPhp.replace('.php', '.js'), function(){ 
							//$.getCSS(urlPhp.replace('.php', '.css'), {}, function(){  });	
							});	
					}
				}
			});
		}
	}
	
	
}
