// Fonctions Macromedia Ultradev
function MM_findObj(n, d) { //v3.0
  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); return x;
}

// Fonction de traduction du message d'erreur
function trad_Erreur (langue, message) {
	var returnValue;
	switch (message) {
		case 'vousdevez': switch(langue) {
				case 'GB': returnValue = "You must indicate : ";
					break;
				case 'IT': returnValue = "Voi dovete indicare : ";
					break;
				default: returnValue = "Vous devez saisir : ";
			}
			break;
		case 'email': switch(langue) {
				case 'GB': returnValue = "with correct e-mail address";
					break;
				case 'IT': returnValue = "con una indirizzo e-mail corretto";
					break;
				default: returnValue = "avec une adresse Email correcte";
			}
			break;
		case 'int': switch(langue) {
				case 'GB': returnValue = "with a number";
					break;
				case 'IT': returnValue = "con una chiffra";
					break;
				default: returnValue = "avec un nombre";
			}
			break;
		case 'num': switch(langue) {
				case 'GB': returnValue = "with a number";
					break;
				case 'IT': returnValue = "con una chiffra";
					break;
				default: returnValue = "avec un chiffre";
			}
			break;
		case 'chaine': switch(langue) {
				case 'EN': returnValue = "with valid characters";
					break;
				case 'GB': returnValue = "with valid characters";
					break;
				case 'IT': returnValue = "con una chiffra";
					break;
				default: returnValue = "avec des caractères valide";
			}
			break;	
	}

	return returnValue;
}

// Cette fonction est une copie amélioré de la fonction de Macromédia.
// Les paramètres passés à cette fonction sont groupé par trois.
// 1 : Nom du élément à controler.
// 2 : Nom texte à afficher
// 3 : Type de contrôle à effectuer.
function MM_validateForm() {
  var i = 0,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments,toFocus=null,element, valtmp;
  var langue = 'FR', expressionReguliere, nonEmail;

	if (args.length % 3 != 0) {
		langue = args[0];
		i = 1;
	} 
  
  	for (; i<(args.length-2); i+=3) { 
  		test=args[i+2]; 
  		val=MM_findObj(args[i]);
    	if (val) { 
    		nm=args[i+1]; 
			element=val;
    		if ((val=val.value)!="") {
	      		if (test.indexOf('isEmail')!=-1) { 
					try {
						expressionReguliere = "^[a-z|0-9|\\-|_|\\.]+@[a-z|0-9|\\-|_]+[a-z|0-9|\\-|_|\\.]*\\.[a-z]{2,3}$";
//							expressionReguliere = "^[a-z|0-9|\\-|_|\\.]+@(?=[a-z|0-9|\\-|_]+\\.)+[a-z]{2,3}$";
						var re = new RegExp(expressionReguliere,"i");
						nonEmail = (!re.test(val));
					} catch (e) {
						p=val.indexOf('@');
						nonEmail = (p<1 || p==(val.length-1));
					}
        			if (nonEmail) { 
	        			errors+='- '+nm +' ' +trad_Erreur (langue,"email")+'\n';
					}
      			} else if (test!='R') { 
					if (test.indexOf('isInt')!=-1) {
						num = parseInt(val);
						if (val!=''+num) 
		        				errors+='- '+nm +' ' +trad_Erreur (langue, "int")+'\n';
					} 
					if(test.indexOf('isValide')!=-1) {
    					var reg = /[a-zA-Zéèîâôêùç0-9-._]$/;
						if (reg.exec(val)==null) { 
							errors += '- ' + nm + ' ' + trad_Erreur(langue, "chaine") + '\n';         
						}
	    			}
	    			if (test.indexOf('isFloat')!=-1) {
						valtmp = val +'1';
			      			num = parseFloat(valtmp);
						if (valtmp!=''+num) 
		        				errors+='- '+nm +' ' +trad_Erreur (langue, "num")+'\n';
					}
	        		if (test.indexOf('inRange') != -1) { 
	        			p=test.indexOf(':');
	          			min=test.substring(8,p); 
	          			max=test.substring(p+1);
	          			if (num<min || max<num) 
	          				errors+='- '+nm+' avec un nombre entre '+min+' et '+max+'.\n';
	    			}
    			} 
    		} else if (test.charAt(0) == 'R') 
    			errors += '- '+nm+'\n'; 
			if (errors.length!=0 && toFocus==null)  {
				toFocus=element;
			}
    	}
  	}
  	
	if (errors) {
  		alert(trad_Erreur (langue, "vousdevez") +'\n'+errors);
		toFocus.focus();
	}
  	document.MM_returnValue = (errors == '');
}

// Cette procédure ne sert qu'à harmoniser les messages d'erreurs de siasie d'un formulaire
function ControlFormMessage(theLang, theText) {
	var args=ControlFormMessage.arguments, message='';

	for (var i=1; i<args.length; i++)
		message += ' - ' +args[i] +'\n'

	alert (trad_Erreur (theLang, "vousdevez") +'\n' +message);
}

// Cette procédure ne sert qu'à harmoniser les messages d'erreurs de siasie d'un formulaire
function ControlFormMessageFocus(theLang, theElement, theText) {
	var args=ControlFormMessageFocus.arguments, message='';

	for (var i=2; i<args.length; i++)
		message += ' - ' +args[i] +'\n';

	alert (trad_Erreur (theLang, "vousdevez") +'\n' +message);

	MM_findObj(theElement, false).focus();

}
 
/* Cette fonction supprime les espaces du form element qui est passé en paramètre.
Pour l'instant, cette fonction ne fonctionne qu'avec des entry field 
*/
function SupprimeBlanc(element) {
	var re = /[ ]+/
	element.value=replaceAll(element.value, re, '')
}

function ControleNbCaracteres (elementName, nbMaxCaracteres) {
	if (MM_findObj(elementName, false).value.length>nbMaxCaracteres) {
		alert('Attention, cet élément ne peut contenir\nque ' +nbMaxCaracteres +' caractères.')
		return false;
	}
	
	return true;
}

function validationFlash(a_form){
	var verionFlash_obj = deconcept.SWFObjectUtil.getPlayerVersion();
	if(verionFlash_obj.major<8)
	{
		alert('Merci de mettre a jour votre plugin Flash Player pour continuer');
		return false;
	}
	else
	{
		document.getElementById(a_form).submit();
		return true;
	}
}



/*cette fonction permet de ne pas garder en mémoire les champs d'un formulaire notamment
le numero cb
parametre le nom de la class de l'input */

function Autocompletion(theClass)
{
  if (document.getElementsByTagName) {

    var inputElements = document.getElementsByTagName("input");
	var i=0;
    for (i=0; inputElements[i]; i++) {

      if (inputElements[i].className && (inputElements[i].className.indexOf(theClass) != -1)) {

        inputElements[i].setAttribute("autocomplete","off");

      }//if current input element has the disableAutoComplete class set.

    }//loop thru input elements

  }//basic DOM-happiness-check
}


