function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  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_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


/*****************************************************************/
/*						FONCTIONS FABIEN						 */
/*****************************************************************/
function ltrim ( s ) { 
	return s.replace( "/^\s*/", "" );
}

function rtrim ( s2 ) { 
	return s2.replace( "/\s2*$/", "" ); 
} 

function trim ( s ) { 
	return ltrim(rtrim(s));
}

/*****************************************************************/
/*					FONCTIONS ETIENNE							 */
/*****************************************************************/	

// Global var
var actualFormular = "";

function validFormulaire( nomForm ){
	// Variables necessaires
	var formulaire = eval("document."+nomForm);
	actualFormular = nomForm;
	
	// Check d'abord si le formulaire courant est correctement rempli
	var checking = WhichCheckingFunction(nomForm);	
	var isValidForm = eval( checking );
	return isValidForm
}

// Checks the value that will be inserted
// arg 1 : $value -> The value that will be tested
// arg 2 : $RegExp -> The regexp that test the match
// returns true if test passes
//
function CheckValue( value, RegExp ){
	var fieldValue = value;
	if( fieldValue == "" || fieldValue == "makeChoice" ){
		return false;
	}
	else{
		if( fieldValue.match(RegExp) ){
			return true;
		}
		else{
			return false;
		}
	}
}

// RegExp checking functions
// arg 1 : pays -> Depending on the country, the postal codes are different
// returns the right RegExp to validate the field
//
function RegCodePost( pays ) {
	switch( pays ){
		case "FR" :
			RegCP = "^[0-9][0-9AB][0-9]{3}$";
		break;
		case "AT" :
			RegCP = "^[123456789]{1}[0-9]{3}$";
		break;
		case "CH" :
			RegCP = "^[0-9]{4}$";
		break;
		case "PL" :
			RegCP = "^[01235678]{1}[01234569]{1}-[A-Za-z0-9]{3}$";
		break;
		case "NL" :
			RegCP = "^[0-9]{2}0-[1-9]{1}[0-9]{2}9$";
		break;
		case "PT" :
			RegCP = "^[0-9]{4}-[0-9]{3}$";
		break;
		case "SE" :
			RegCP = "^[0-9]{3} [0-9]{2}$";
		break;
		case "BE" :
			RegCP = "^[0-9]{4}$";
		break;
		case "EN" :
			RegCP = "^[A-Z]{1}[0-9A-Z]{1,3}[ ]{1}[0-9]{1}[A-Z]{2}$";
		break;
		case "UK" :
			RegCP = "^[A-Z]{1}[0-9A-Z]{1,3}[ ]{1}[0-9]{1}[A-Z]{2}$";
		break;
		case "GB" :
			RegCP = "^[A-Z]{1}[0-9A-Z]{1,3}[ ]{1}[0-9]{1}[A-Z]{2}$";
		break;
		case "DE" :
			RegCP = "^[0-9]{5}$";
		break;
		case "ES" :
			RegCP = "^[0-5]{1}[0-9]{4}$";
		break;
		case "IT" :
			RegCP = "^[0-9]{5}$";
		break;
		default:
			RegCP = "[0-9a-zA-Z]{1,}";
	}
	return RegCP;
}

// This function choose which RegExp pattern corresponds to a type of field content
// arg 1 : type -> The type of the field you wish to check
// returns the right RegExp to validate the field
//
function WhichRegExp( type ){
	switch( type ){
		case "Mail" :
			//RegExp = "^[A-Za-z0-9]{1}[A-Za-z0-9\\.\\_\\-]+@[A-Za-z0-9\\-\\_]+\\.[A-Za-z0-9\\-]{2,}(\\.[A-Za-z0-9\\-]{2,})?(\\.[A-Za-z]{2,4})?$";
			RegExp = "^[A-Za-z0-9\\.\\_\\-]+@[A-Za-z0-9\\-\\_]+(\\.[A-Za-z0-9\\-\\_]{2,}){1,}(\\.[A-Za-z]{2,4})?$";
		break;
		case "Pass" :
			RegExp = "^[a-zA-Z0-9\\_\\-\\.]{3,}$";
		break;
		case "Pseudo" :
			RegExp = "^[0-9a-zA-Z@\\_\\-\\.]{3,}$";
		break;
		case "Date" :
			RegExp = "^(0[1-9]|[12][0-9]|3[01])[\\/](0[1-9]|1[012])[\\/](19|20)\\d\\d$";
		break;
		case "Integer" :
			RegExp = "^[0-9]{1,}$";
		break;
		case "TxtOnly" :
			RegExp = "^[a-zA-Z]{2,}$";
		break;
		case "Varchar" :
			RegExp = "^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\\- ]{2,}$";
		break;
		case "TxtFree" :
			RegExp = "^[0-9a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\\-\\,\\'\\. ]{2,}$";
		break;
		case "Adresse" :
			RegExp = "^[0-9a-zA-Z ]{1,}";
		break;
		case "Float" :
			RegExp = "^[0-9]+\\.[0-9]{1,2}$";
		break;
		case "Tel" :
			RegExp = "^((\\+33)|[0-9]{1})[0-9\\.\\-\\/ ]{9,13}$";
		break;
		case "ImageFile" :
			RegExp = "^[A-Za-z0-9\-\\_\\\\\ \\:\\.\\/]*((.gif)|(.jpg)|(.png))$";
		break;
		case "Charac" :
			RegExp = "[A-Za-z0-9]{1,}";
		break;
		case "oneToten" :
			RegExp = "^([0-9]|1[0])$";
		break;
	}
	return RegExp;
}

// This function returns an exemple of what is wait fot
// arg 1 : type -> The type of the field you wish to check
// returns the example
//
function WhichExample( type ){
	switch( type ){
		case "Mail" :
			example = "jdupont@dupont.fr";
		break;
		case "Pass" :
			example = "a2W3z (3 caractères minimum)";
		break;
		case "Pseudo" :
			example = "jDuponT1 (3 caractères minimum)";
		break;
		case "Date" :
			example = "30/10/1972";
		break;
		case "Integer" :
			example = "";
		break;
		case "TxtOnly" :
			example = "bienvenue  (pas de caractères spéciaux, accent, espace, apostrophe, ponctuation,...)";
		break;
		case "Varchar" :
			example = "Institut des voyages";
		break;
		case "TxtFree" :
			example = "Bienvenue sur l'institut des voyages";
		break;
		case "Adresse" :
			example = "3, rue du pont";
		break;
		case "Float" :
			example = "0.1 ou 0.25 ou 1";
		break;
		case "Tel" :
			example = "0123456789 ou +33123456789";
		break;
		case "ImageFile" :
			example = "image.gif ou image.png ou image.jpg (pas de caractères accentués)";
		break;
		case "Charac" :
			example = "au moins une lettre";
		break;
		case "oneToten" :
			example = "un chiffre de 0 à 10 sans virgule";
		break;
		case "CP" :
			example = "75001 pour la France";
		break;
	}
	return example;
}

// Fonction demandant une confirmation de la part de l'utilisateur afin d'effectuer l'action
// arg 1 : message a afficher
// arg 2 : url de redirection le cas echeant
//
function authorizeAction(message,url){
	if( confirm( message ) ) {
		location.href = url;
		return true;
	}
	else {
		return false;
	}
}

// fonction permettant de connaitre la position dans le tableau
//	arg 1 : tableau
//	arg 2 : nom a trouve
//
function whichTabKey( tab,val ){
	for(var i=0;i<tab.length;i++){
		if( tab[i] == val ){
			break;
		}
	}
	return i;
}

// Cette fonction permet de savoir si une valeur est deja presente
//	arg 1 : valeur
//	arg 2 : tableau
//
function checkExistingValue( val,tab ){
	var exists = false;
	for(var i=0;i<tab.length;i++){
		if( tab[i] == val ){
			exists = true;
		}
	}
	return exists;
}

// Fonction qui teste les boutons radio
// arg 1 : radio -> le nom du groupe à tester
//	arg 2 : formular object
//
function testerRadio( rad,formular ){
	var Nb_rad = formular.elements[rad].length;
    for (var i=0; i<Nb_rad; i++) {
       if( formular.elements[rad][i].checked ) {
          //return radio[i].value;
		  return true;
		  break;
       }
    }
	return false;
}

// Fonction qui checke les cases à cocher
//	arg 1 : nom du checkbox
//	arg 2 : formular object
//	-- retourne le nb elements coches
//
function testerCheckBox( chk,formular ){
	var Nb_chk = formular.elements[chk].length;
	var c = 0;
	var whatChecked = "";
	if( typeof Nb_chk == "undefined" ){
		val=formular.elements[chk].value;
		if( formular.elements[chk].checked ){
			whatChecked = val+"#"+whatChecked;
			c++;
		}
	}
	else{
		for(a=0;a<parseInt(Nb_chk);a++){
			val=formular.elements[chk][a].value;
			if( formular.elements[chk][a].checked ){
				whatChecked = val+"#"+whatChecked;
				c++;
			}
		}
	}
	return whatChecked;
}

function textState( state,obj ){
	if( state ){
		document.getElementById(obj).disabled = false;
	}
	else{
		document.getElementById(obj).disabled = true;
	}
}

function noPanel(){
	var tChk = document.getElementsByName("participationautrepanels[]").length;
	for(var i=0; i<tChk; i++){
		var quoi =  eval("document.getElementsByName(\"participationautrepanels[]\")["+i+"].value");
		if( quoi == "Non" ){
			var posChk = i;
		}
	}
	var onChk = eval("document.getElementsByName(\"participationautrepanels[]\")["+posChk+"].checked");
	if( onChk ){
		for(var i=0; i<tChk; i++){
			eval("document.getElementsByName(\"participationautrepanels[]\")["+i+"].checked = false;");
		}
		eval("document.getElementsByName(\"participationautrepanels[]\")["+posChk+"].checked = true;");
	}
}

function uncheckNoPanel(){
	var tChk = document.getElementsByName("participationautrepanels[]").length;
	for(var i=0; i<tChk; i++){
		var quoi =  eval("document.getElementsByName(\"participationautrepanels[]\")["+i+"].value");
		if( quoi == "Non" ){
			var onChk = eval("document.getElementsByName(\"participationautrepanels[]\")["+i+"].checked");
			if( onChk ){
				eval("document.getElementsByName(\"participationautrepanels[]\")["+i+"].checked = false;");
			}
		}
	}
}
