addEvents(window, 'load', countCar);

function MM_findObj(n,d){var p,i,x;if(!d)d=document;if((p=n.indexOf("?"))>0&&parent.frames.length){d=parent.frames[n.substring(p+1)].document;n=n.substring(0,p);}if(!(x=d[n])&&d.all)x=d.all[n];for(i=0;!x&&i<d.forms.length;i++)x=d.forms[i][n];for(i=0;!x&&d.layers&&i<d.layers.length;i++)x=MM_findObj(n,d.layers[i].document);if(!x&&d.getElementById)x=d.getElementById(n);return x;}

function MM_validateForm() { // 4 arguments
	var sM = "[a-z0-9_]+((-[a-z0-9_]+)|([.][a-z0-9_]+)|(_[a-z0-9_]+))*@[a-z0-9]+(([.]|-)[a-z0-9]+)*[.][a-z]{2,}";
	var sF = "(^[/(/)a-z0-9_-]+[.])";
	var sI = "gif|jpg|jpeg|png";

	var oReg = {
				Email:		eval("/^" + sM + "$/i"),
				Mailing:	eval("/^((" + sM + ");?){1,}$/i"),
				Entier: 	/^\d+/,
				Decimal:	/^\d+[,.]?\d*$/i,
				Date: 		/^\d{2}\/\d{2}\/\d{4}$/,
				Heure: 		/^(([0-1]\d)|(2[0-3]))(:[0-5]\d){2}$/,
				FileAll:	eval("/" + sF + "[a-z\d]{3,4}$/i"),
				FileJPG:	eval("/" + sF + "(jpg|jpeg)$/i"),
				FileImg:	eval("/" + sF + "(" + sI + ")$/i"),
				FileFich: 	eval("/" + sF + "(" + sI + "|doc|pdf|zip|bmp|wmv|swf)$/i"),
				FileMov: 	eval("/" + sF + "(" + sI + "|mov|mpg|mpe|mpeg|avi|wmv|rpm|ra|rm|fli|asf|asx)$/i"),
				Suppr: 		/^(oui)$/i,
				Folder: 	/^[a-z\d_-]*$/i,
				ColorHexa: 	/^(#)+[\dA-F]{6}$|^$/gi
			   };
			   
	function Test(c, v) {	
		return new RegExp(oReg[c]).test(v);
	}	
	function Cond(c, v) {			
		return (v.indexOf(c)!=-1);
	}

	var groupe, bCheck, j, i, min, max, tab, err='';
	var args = MM_validateForm.arguments;
	for(i=0; i<(args.length-3); i+=4) {
		var v = MM_findObj(args[i]); // valeur
		var c = args[i+2]; 	 // condition
		var lbl = args[i+3]; // label

		if (v) {
			v = v.value;
			if (Cond('Trim', c)) v = v.replace(/(^\s*)|(\s*$)/g, "");

			if (v!="" || v=="null") { 
				if (Cond('isColorHexa', c)) if (!Test("ColorHexa", v)) err += langue("isColorHexa", [["%1",lbl]]) + "\n";
				if (Cond('isFolder', c)) if (!Test("Folder", v)) err += langue("isFolder", [["%1",lbl]]) + "\n";
				if (Cond('isSuppr', c)) if (!Test("Suppr", v)) err += langue("isSuppr", [["%1",lbl]]) + "\n";
				if (Cond('isEmail', c)) if (!Test("Email", v)) err += langue("isEmail", [["%1",lbl]]) + "\n";
				if (Cond('isMailing', c)) if (!Test("Mailing", v)) err += langue("isMailing", [["%1",lbl]]) + "\n";
				if (Cond('isSelect', c)) if (v == "null" && c.charAt(0) == 'R') err += langue("isSelect", [["%1",lbl]]) + "\n";

				if (Cond('isHeure', c)) if (!Test("Heure", v)) err += langue("isHeure", [["%1",lbl]]) + "\n";
				if (Cond('isDate', c) || Cond('isADate', c)) {
					var ok = (Cond('isADate', c) && v=="Toujours visible");

					if (!Test("Date", v) && !ok) err += langue("isDate", [["%1",lbl]]) + "\n";
					else if (!ok) { // la date existe t-elle ?
						var tab_mois = [ [langue("jan"), 31], [langue("fev"), 29], [langue("mar"), 31], [langue("avr"), 30], [langue("mai"), 31], [langue("juin"), 30], [langue("jui"), 31], [langue("aou"), 31], [langue("sep"), 30], [langue("oct"), 31], [langue("nov"), 30], [langue("dec"), 31] ];
						var jour = parseInt(eval(v.substring(0,2)));
						var mois = parseInt(eval(v.substring(3,5)));
						var an = parseInt(eval(v.substring(6,10)));

						// année bissextile ?
						tab_mois[1][1] = ((an % 100 != 0 && an % 4 == 0) || (an % 400 == 0)) ? 29 : 28;

						var bErreur = false;
						if(mois>12 || mois<1) {
							bErreur = true;
							err += langue("isDateMois", [["%1",lbl]]) + "\n";
						}
						if(jour>31 || jour<1) {
							bErreur = true;
							err += langue("isDateJour", [["%1",lbl]]) + "\n";
						}

						if (!bErreur) {
							mois = mois - 1;
							if ((an * 10000 + mois * 100 + jour) < 15821220) // date < au lundi 20 decembre 1582
								err += langue("isDatePeriode", [["%1",lbl]]) + "\n";
							else if (tab_mois[mois][1] < jour) { // date est coherente ?
								err += langue("isDateNbJour", [["%1",jour], ["%2",tab_mois[mois][0]], ["%3",an], ["%4",ab_mois[mois][1]]]) + "\n";
							}
						}
					}
		    	}
				
				if (Cond('isEntier', c)) if (!Test("Entier", v)) err += langue("isEntier", [["%1",lbl]]) + "\n";
				if (Cond('isEntierRange', c)) {
		        	min=parseInt(vf_mid(c,':','to')); max=parseInt(vf_mid(c,'to'));
					if (v<min || max<v) err += langue("isEntierRange", [["%1",lbl], ["%2",min], ["%3",max]]) + "\n";
			    }
				if (Cond('isDecimal', c)) if (!Test("Decimal", v)) err += langue("isDecimal", [["%1",lbl]]) + "\n";
				if (Cond('isDecimalRange', c)) {
		        	min=parseInt(vf_mid(c,':','to')); max=parseInt(vf_mid(c,'to'));
			        if (v<min || max<v) err += langue("isDecimalRange", [["%1",lbl], ["%2",min], ["%3",max]]) + "\n";
			    }
				if (Cond('isMin', c)) {
	        		min=parseInt(vf_mid(c,'<',':'));
			        if (v.length<min) err += langue("isMin", [["%1",lbl], ["%2",min]]) + "\n";
				}
				if (Cond('isNombreMax', c)) if (v>parseFloat(vf_mid(c,'>',':'))) err += langue("isNombreMax", [["%1",lbl]]) + "\n";
 				if (Cond('isLimitecar', c)) {
					max = vf_mid(c,':');
		        	if (max > 0 && v.length>max) err += langue("isLimitecar", [["%1",lbl], ["%2",v.length], ["%3",v.max]]) + "\n";
		    	}	
								
				// si test fichier on change v qui est = au chemin absolue en no mde fichier
				if (Cond('isFile', c)) {
					tab = v.split(/\\|\//);
					v = tab[tab.length-1];
				}
				if (Cond('isFileAll', c)) {
					var ext = v.substr(v.lastIndexOf(".") + 1).toLowerCase();
					if (!Test("FileAll", v) || ext=="exe" || ext=="com" || ext=="bat") err += langue("isFileAll", [["%1",lbl], ["%2",v]]) + "\n";
			    }
				if (Cond('isFileMov', c)) if (!Test("FileMov", v)) err += langue("isFileMov", [["%1",lbl], ["%2",v]]) + "\n";
				if (Cond('isFileImg', c)) if (!Test("FileImg", v)) err += langue("isFileImg", [["%1",lbl], ["%2",v]]) + "\n";
				if (Cond('isFileJPG', c)) if (!Test("FileJPG", v)) err += langue("isFileJPG", [["%1",lbl]]) + "\n";
			    if (Cond('isFileFich', c) || Cond('isFileAnim', c)) if (!Test("FileFich", v))  err += langue("isFileFich", [["%1",lbl], ["%2",v]]) + "\n";

				if (Cond('isCheckboxGForm', c)) { // spec géné de form
					bCheck = false;
					var oFgp = document.forms['ff_' + document.getElementById(args[i]).value];
					for(j=0;j<oFgp.length;j++) {
						groupe = oFgp.elements[j];
						if (groupe.type != null) {
							if (groupe.type.toLowerCase() == "checkbox" && groupe.name.indexOf(args[i] + "_") != -1)
								if(groupe.checked) bCheck = true;
						}
					}	
					if (!bCheck) err += langue("isObligatoire", [["%1",lbl]]) + "\n";
				}
				else {
					if (Cond('isRadio', c) || Cond('isCheckbox', c)) {
						groupe = document.getElementsByName(args[i]);
						bCheck = false;
						for(j=0;j<groupe.length;j++)
							if(groupe[j].checked){
								 bCheck = true;
								 break;
							}
						if (!bCheck) err += langue("isObligatoire", [["%1",lbl]]) + "\n";
					}
				}
			} else if (c.charAt(0) == 'R') err += langue("isObligatoire", [["%1",lbl]]) + "\n";
		}
	}
	if (err) alert(langue("error") + "\n\n" + err);
	document.MM_returnValue = (err == '');
}
function vf_mid(v, dtag, ftag) {
	var d=v.indexOf(dtag)+dtag.length;
	return ftag ? v.substring(d,v.indexOf(ftag)) : v.substring(d);
}

function alertForm( sMod ) {
	switch (sMod) {
		case "rechercher" :
			alert(langue("alertRechercher"));
			break;
		default :
			alert(langue("alertDefaut"));
	}
}

function countCar() {
	var counts = document.getElementsByClass('maxlength', null, null);
	var i, count, matches, countHolder;

	for (i=0; i<counts.length; i++)	{
		count = counts[i];
		matches = count.className.match(/max_([0-9]+)/);
		count.maxVal = RegExp.$1;
		count.holder = document.getElementById(count.id + 'Count');
		if (count.holder) {
			count.holder.value = 'caract. maxi : ' + (count.maxVal - count.value.length);
			count.onkeyup = chkCountCar;
			count.onfocus = chkCountCar;
			count.onblur = chkCountCar;
		}
	}	
}
function chkCountCar() {
	if (this.value.length > this.maxVal) this.value = this.value.substring(0, this.maxVal);
	this.holder.value = 'caract. maxi : ' + (this.maxVal - this.value.length);
}

function disableForm() {
	var oEl, i, ii, aForm = document.forms;

	for (ii=0;ii<aForm.length;ii++) { // tous les formulaires de la page
		for (i=0;i<aForm[ii].length;i++) {
			oEl = aForm[ii].elements[i];
			if (oEl.type != null)
				switch (oEl.type.toLowerCase()) {
					case "submit":case "button":case "reset":case "image":
						oEl.disabled = true;
				}
		}
	}
}

// test 2 dates
function DateToNumber(oFormName, oDebName, oFinName, oNbdebName, oNbfinName) {
	var oForm = document.forms[oFormName];
	var aElem = [[oNbdebName, oDebName],[oNbfinName, oFinName]];
	for(var i = 0;i<aElem.length;i++)
		oForm.elements[aElem[i][0]].value = oForm.elements[aElem[i][1]].value.replace(/(\d{2})\/(\d{2})\/(\d{4})/gi,"$3$2$1");
}