// variables globales
var formatData="";
var gDateMin="01/01/1800";
var gDateMax="01/01/9000";

function ValiderDate(DateTexte) {
 var Expression = /\d{2}\/\d{2}\/\d{4}/

 if (DateTexte.match(Expression))
 {	
	if (DateTexte.length != 10 || DateTexte.substr(2,1) != "/" || DateTexte.substr(5,1) != "/")
	     return(false);
	else
	    {
	      var jj   = DateTexte.substr(0, 2);
	      var mm   = DateTexte.substr(3, 2);
	      var aaaa = DateTexte.substr(6, 4);

		  if (parseInt(aaaa,10) < parseInt(gDateMin.substr(6, 4),10) || parseInt(aaaa,10) > parseInt(gDateMax.substr(6, 4),10))
	           return(false);
	      else
	          { 
	           if (parseInt(mm,10) < 1 || parseInt(mm,10) > 12)
	                 return(false);
	           else
	                {
						switch(parseInt(mm,10))
	                  {
	                   case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : var JMax = 31;
	                                  												  break;
	                   case 2 : if ((aaaa % 4 == 0 || aaaa % 100 == 0) && (aaaa % 400 == 0)) 
									  JMax = 29;
								  else
									  JMax = 28;
	                            break;
	                   case 4 : case 6 : case 9 : case 11 : var JMax = 30;
	                                                        break;
	                  }
	                  if (parseInt(jj, 10) < 1 || parseInt(jj,10) > JMax)
	                       return (false);
						else
							{
								var DateMin = gDateMin;
	                          var DateMax = gDateMax;
	                          var MaDate  = aaaa + mm + jj;  
								DateMin = DateMin.substr(6,4) + DateMin.substr(3,2)	+ DateMin.substr(0,2);
								DateMax = DateMax.substr(6,4) + DateMax.substr(3,2)	+ DateMax.substr(0,2);
								if (MaDate < DateMin || MaDate > DateMax)
	                                 return(false);    
							}
	                }
	           }
	     }
 }
 else 
	  return (false);
 return(true);
}

function Redirect(ls_frame, ls_location) {
   eval(ls_frame + ".location='" + ls_location + "';");
	return false;
}

//enlever les blancs
function trim(sVal) {
	sVal=sVal.replace(/^\s+|\s+$/g,"");

	return sVal.replace(/\s+/g," ");
}

//verifier le type d'un champ
function verifierTypage(oVal,f) {
	switch (oVal.field_type) {
	case "texte" :
		formatData="";
		if (oVal.value=="") return false;
		break;
	case "file" :
		formatData="";
		if (oVal.value=="") return false;
		break;
	case "telephone" :
		formatData="";
		if (oVal.value=="") return false;
		break;
	case "codePostal" :
		formatData=" (5 chiffres)";
		if ((oVal.value=="") || !(/^\d{5}$/g.test(oVal.value))) return false;
		break;
	case "entier" :
		formatData=" (nombre)";
		if (oVal.value=="" || (isNaN(parseInt(oVal.value,10)))) return false;
		break;
	case "date" :
		formatData=" (jj/mm/aaaa)";
		//le formatage du champs date a deja ete verifie par le controle.
		if (oVal.value=="") return false;
		if (!ValiderDate(oVal.value)) return false;
		break;
	case "choix" :
		var ok=false;
		formatData="";
		//recherche des autres boutons de radio
		for (var j=1;j<f.length;j++) {
			if (f.elements[j].name==oVal.value) {
			// au moins une option doit etre choisi
				if (f.elements[j].checked) {
					ok=true;
					break;
				}
			}
		}
		return ok;
		break;
	case "liste" :
		formatData="";
		if (oVal.options.selectedIndex==-1) return false;
		break;
	}
	return true;
}

//verifier les champs obligatoires
function verifierChamps(f) {
	var aMessage= new Array();
	var bAjoutMessage=false;

	//parcourir tous les champs
	formatData="";
	
	for (var i=0;i<f.length;i++) {
		//le champ est obligatoire ?
		if (f.elements[i].field_mandatory=='1') {
	 		f.elements[i].value=trim(f.elements[i].value);

			//ajouter un message ?
			if (!verifierTypage(f.elements[i],f)) {
				if (aMessage[f.elements[i].field_page-1]==null) aMessage[f.elements[i].field_page-1]="\n- ";
				else aMessage[f.elements[i].field_page-1]+="\n- ";

				aMessage[f.elements[i].field_page-1]+=f.elements[i].field_label;
				aMessage[f.elements[i].field_page-1]+=formatData;
			}
		}

	}

	// on a des erreurs ?
	if (aMessage.length==0) return true;
	else {
		var message="Le formulaire ne peut être enregistré. Les informations suivantes ne sont pas renseignées :";

		for (var i=0; i<aMessage.length;i++) {
			if (aMessage[i]!=null) {
				message=message+"\n\nPage "+(i+1)+" :";
				message+=aMessage[i];
			}
		}

		alert(message);
		return false;
	}
}

function replace(string,text,by) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}


