/**
 * @author BE Strategy
 * @copyright www.bestrategy.com 2010
**/

function showMsg(type,err,id)
{
	$("#"+type).html(getError(err));
	$("#"+type).fadeIn("slow");
	if(id!="")
	{
		$("#lb"+id).html('*');
		$("#"+id).focus();
	}
}

function gettypefile(val)
{
	switch(val)
	{
		case "img" :
			type = ['','.jpeg','.jpg','.png','.bmp','.gif'];
			return type; 
		break;
		case "file" :
			type = ['','.pdf','.doc','.docx','.swf'];
			return type; 
		break;
	}
}

function count(val)
{
	statut = true;
	i=0;
	while(statut == true)
	{
		if(val[i])
		{
			i++;
		}
		else
		{
			statut = false;
			return i;
		}
	}
}
function frmclear(id)
{
	$(".error").fadeOut("slow");
	$(".alert").fadeOut("slow");
	$("label").html("");
	$("#frm"+id+" input[id!='id']").not(".button,.file").val("");
	$("#frm"+id+" textarea").val("");
	$("#frm"+id+" select option[value='null_00']").attr("selected","selected");	
}

function verchamps(id)
{
	// variables pour l'état retournée.
	stat  = 0;
	astat = 0;
	// variable pour spécifier si le formulaire est un formulaire simple ou avec upload de fichier.
	upload= 0;
	
	// Type de message retourné.
	Error = "error"+id;
	Alert = "alert"+id;
	
	// calculer le nombre des champs existant.
	$("#frm"+id+" input[ref^='{'], #frm"+id+" textarea[ref^='{'], #frm"+id+" select[ref^='{'], #frm"+id+" checkbox[ref^='{']").each(function()
	{
		info = String($("#"+this.id).attr("ref"));
		if((info!=null) && (info!="") && (info.substr(0,1)=="{"))
		{
			stat++;
		}
	});
	// vérifier les champs.
	$("#frm"+id+" input[ref^='{'], #frm"+id+" textarea[ref^='{'], #frm"+id+" select[ref^='{'], #frm"+id+" checkbox[ref^='{']").each(function()
	{
		info = String($("#"+this.id).attr("ref"));
		if((info!=null) && (info!="") && (info.substr(0,1)=="{"))
		{
			rows = info.split(",");
			type = rows[0].split(":"); type = type[1];
			obli = rows[1].split(":"); obli = obli[1];
			if(count(rows)>2)
			{
				champ = rows[2].split(":"); champ = champ[1];
			}
			switch(type)
			{
				case "txt" :
					if((obli== true) && ($(this).val()==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;
					}
			 	break;
				case "nbr" :
					var nbr = $(this).val();
					if((obli== true) && (nbr==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;
					}
					else if(nbr!="")
					{
						var verif = /[0-9.]/;
						if (verif.exec(nbr) == null)
						{
							showMsg(Alert,"err_nbr",this.id);
							return false;
						}
					}
			 	break;
				case "mdp" :
					var mdp = $(this).val();
					if(mdp=="")
					{
						showMsg(Error,"err_obli",this.id);
						return false;
					}
					else if(mdp!="")
					{
						var verif = /[a-zA-Z0-9_.-]/;
						if (verif.exec(mdp) == null)
						{
							showMsg(Alert,"err_mdp",this.id);
							return false;
						}
					}
			 	break;
				case "conf" :
					if($(this).val()=="")
					{
						showMsg(Error,"err_obli",this.id);
						return false;
					}
					else if($(this).val()!=$("#"+champ).val())
					{
						showMsg(Alert,"err_conf",this.id);
						return false;
					}
			 	break;
				case "sel" :
					if((obli== true) && (($(this).val()=="null_00") || ($(this).val()=="")))
					{
						showMsg(Error,"err_obli",this.id);
						return false;
					}
			 	break;
				case "msel" :
					if((obli== true) && ($(this).val()==null))
					{
						showMsg(Error,"err_obli",this.id);
						return false;
					}
					else
					{
						$("#"+this.id+" option").attr("selected","selected");
					}
			 	break;
				case "mail" :
					var email = $(this).val();
					if((obli== true) && (email==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;
					}
					else if(email!="")
					{
						var verif = /[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}/;
						if (verif.exec(email) == null)
						{
							showMsg(Alert,"err_mail",this.id);
							return false;
						}
					}
			 	break;
				case "site" :
					var site = $(this).val();
					if((obli== true) && (site==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;	
					}
					else if(site!="")
					{
						var verif = /[h]{1}[t]{2}[p]{1}[:]{1}[/]{2}[a-zA-Z0-9-.]{2,}[.][a-zA-Z]{2,3}/;
						if (verif.exec(site) == null)
						{
							showMsg(Alert,"err_site",this.id);
							return false;
						}
					}
			 	break;
				case "tel" :
					var tel = $(this).val();
					if((obli== true) && (tel==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;	
					}
					else if(tel!="")
					{
						var verif = /^[0-9]{1,}/;
						if (verif.exec(tel) == null)
						{
							showMsg(Alert,"err_tel",this.id);
							return false;
						}
					}
			 	break;
				case "date" :
					var date = $(this).val();
					if((obli== true) && (date==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;	
					}
					else if(date!="")
					{
						var verif = /^[0-9]{1,2}[/]{1}[0-9]{1,2}[/]{1}[0-9]{4}/;
						if (verif.exec(date) == null)
						{
							showMsg(Alert,"err_date",this.id);
							return false;
						}
					}
			 	break;
				case "hr" :
					var hr = $(this).val();
					if((obli== true) && (hr==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;	
					}
					else if(hr!="")
					{
						var verif = /[0-9]{1,2}[:]{1}[0-9]{1,2}/;
						if (verif.exec(hr) == null)
						{
							showMsg(Alert,"err_hr",this.id);
							return false;
						}
					}
			 	break;
				case "yr" :
					var yr = $(this).val();
					if((obli== true) && (yr==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;	
					}
					else if(yr!="")
					{
						var verif = /[0-9]{4}/;
						if (verif.exec(yr) == null)
						{
							showMsg(Alert,"err_yr",this.id);
							return false;
						}
					}
			 	break;
				case "file" :
					upload = 1;
					var fl = $(this).val();
					if((obli== true) && (fl==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;	
					}
					else if(fl!="")
					{
						up  = "";
						ext = gettypefile("file");
						fl_ = String($("#"+this.id).val());
						fl  = fl_.substr(fl_.lastIndexOf('.'));
						fl  = fl.toLowerCase();
						$.each(ext, function(index, value)
						{ 
						  if(value==fl) { up = index; }
						});
						if(up=="")
						{
							showMsg(Alert,"0005","s"+this.id);
							return false;
						}
					}
			 	break;
				case "img" :
					upload = 1;
					var img = $(this).val();
					if((obli== true) && (img==""))
					{
						showMsg(Error,"err_obli",this.id);
						return false;	
					}
					else if(img!="")
					{
						up  = "";
						ext = gettypefile("img");
						img_ = String($("#"+this.id).val());
						img  = img_.substr(img_.lastIndexOf('.'));
						img  = img.toLowerCase();
						$.each(ext, function(index, value)
						{ 
						  if(value==img) { up = index; }
						});
						if(up=="")
						{
							showMsg(Alert,"0004",this.id);
							return false;
						}
					}
			 	break;
				case "antiro" :
					if($(this).val()=="")
					{
						showMsg(Error,"err_antiro",this.id);
						return false;	
					}
			 	break;
				case "box" :
					if(($(this).attr("checked")==false) && (obli== true))
					{
						showMsg(Error,"err_obli",this.id);
						return false;	
					}
			 	break;
			}		
			astat++;
		}
	});
	if(stat==astat)
	{
		return true;
	}
	else
	{
		return false;
	}
}


function subfrm(id,subln,ty)
{
	vars   = "";
	
	$(".error").fadeOut("slow");
	$(".alert").fadeOut("slow");
	$("label").html("");

	if((verchamps(id)) && (subln!=""))
	{
		// mettre un loader pendant le chargement de la page.
 		$("#sub"+id).html(loader);
 		
		//récupérer les différents valeurs des champs.
		if(upload==0)
		{
			$("#frm"+id+" input[ref^='{'], #frm"+id+" textarea[ref^='{'], #frm"+id+" select[ref^='{'], #frm"+id+" checkbox[ref^='{']").each(function()
			{
				info = String($("#"+this.id).attr("ref"));
				if((info!=null) && (info!="") && (info.substr(0,1)=="{"))
				{
					rows = info.split(",");
					type = rows[0].split(":"); type = type[1];
					if(type=="box")
					{
						if(($(this).attr("checked")==false))
						{
							$(this).val("0");
						}
						else
						{
							$(this).val("1");
						}
					}
					if(vars == "")
					{
						vars = this.id+"="+escape($("#"+this.id).val());
					}
					else
					{
						vars += "&"+this.id+"="+escape($("#"+this.id).val());
					}
					
					info = String($("#"+this.id).attr("ref"));
					if((info!=null) && (info!="") && (info.substr(0,1)=="{"))
					{
						stat++;
					}
				}
			});
			if(ty==1)
			{
				vars = vars+"&id="+$("#id").val();
			}
			// valider le formulaire.

			$("#sub"+id).load(subln+"?"+vars);
		}
		else
		{
			if($("#frm"+id).parent().is("form"))
			{
				var form_nm = "ajupl";
				var form	= $("#frm"+id).parent();
				
				$(form).attr("id",form_nm);
				$(form).attr("name",form_nm);
				$(form).attr("action",subln);

				$("#"+form_nm).submit();
				
				$("#"+form_nm).removeAttr('name');
				$("#"+form_nm).removeAttr('action');
				$("#"+form_nm).removeAttr('id');
				
				//$("#"+frm+" input[ref^='{'],textarea[ref^='{']").val("");
			}
			else
			{
				var form  = "ajupl";
				var frame = $('<iframe id="frajupl" name="frajupl"></iframe>');
				$(frame).appendTo("#frm"+id);
				$("#frm"+id).wrap('<form target="frajupl" action="'+subln+'" method="POST" name="'+form+'" id="'+form+'" enctype="multipart/form-data"></form>');
				$("#"+form).submit();

				$("#"+form).removeAttr('name');
				$("#"+form).removeAttr('action');
				$("#"+form).removeAttr('id');
			}
		}
	}
	else if($("#id").val()=="")
	{
		showMsg(Error,"err_obli","");
		return false;	
	}
}
