//############ FONCTIONS PERMETTANT DE CENTRER LA POPUP TOUT EN OUTREPASSANT L'ANTIPOPUP #########

function top_centre(hauteur)
	{	 
	 var top=(screen.height-hauteur)/2;	 
	 return top;
	}
	
function left_centre(largeur)
	{	 
	 var left=(screen.width-largeur)/2;	 
	 return left;
	}
//################################################################################################

function formChecker(name){
	this.name=name;
	this.checkpays = function(){
		if(arguments.length == 0) return false;
		var _pays= eval('document.' + arguments[0] + '.pays');
		if(_pays.options[_pays.selectedIndex].value.length>1){
			return true;
		}else{
			alert("Please choose country");
			return false;
		}
	}
	this.checkville = function(){
		if(arguments.length == 0) return false;
		var _ville = eval('document.' + arguments[0] + '.ville');
		if(_ville.value != ''){
			return true;
		}else{
			alert("City is a required field.");
			return false;
		}
	}
	this.checkcp = function(){
		if(arguments.length == 0) return false;
		var _cp = eval('document.' + arguments[0] + '.cp');
		if(_cp.value != ''){ 
			return true;
		}else{
			alert("Your zip code is a required field.");
			return false;
		}
	}
	this.checknom = function(){
		if(arguments.length == 0) return false;
		var _nom = eval('document.' + arguments[0] + '.nom');
		if(_nom.value != ''){
			return true;
		}else{
			alert("Your lastname is a required field.");
			return false;
		}
	}
	this.checkprenom = function(){
		if(arguments.length == 0) return false;
		var _prenom = eval('document.' + arguments[0] + '.prenom');
		if(_prenom.value != ''){
			return true;
		}else{
			alert("Your firstname is a required field.");
			return false;
		}
	}
	this.checkagence = function(){
		if(arguments.length == 0) return false;
		var _agence = eval('document.' + arguments[0] + '.agence');
		if(_agence.value != ''){
			return true;
		}else{
			alert("Your company is a required field.");
			return false;
		}
	}
	this.checkadresse = function(){
		if(arguments.length == 0) return false;
		var _adresse = eval('document.' + arguments[0] + '.adresse');
		if(_adresse.value != ''){
			return true;
		}else{
			alert("Your adress is a required field.");
			return false;
		}
	}
	this.checkemail = function(){	 		
		if(arguments.length == 0) return false;
		var _email = eval('document.' + arguments[0] + '.email');
		if(_email.value == '')
			{
			 alert("Your email adress is a required field.");
			 return false;
			}						
		if(_email.value != '')
			{   		 
	  	 if(checkEmail(_email.value))
			 	{
		 	 	 return true;
				}
	 		 else
	 		 	{
		 		 alert("This email does not have a valid syntax");
		 		 return false;
				}		
		  }		  
	}
	
	this.checkemail_confirm = function(){	 		
		if(arguments.length == 0) return false;		
		var _email = eval('document.' + arguments[0] + '.email');
		var _email_confirm = eval('document.' + arguments[0] + '.email_confirm');
		if(_email_confirm.value == ''){
			 alert("Please confirm your email adress.");
			 return false;
		}						
		if(_email_confirm.value != ''){			 
			//var exp = /w{3}\./i;
	  	 	//var exp2 = /@\D{1,}\.\D{1,}/i;
	  		//var tmp_email = _email_confirm.value.match(exp);
	  	 	//var tmp_email2 = _email_confirm.value.match(exp2);
			
			//if(tmp_email){
		 	//	alert("Le format de cet Email n'est pas valide !");
		 	 //	return false;
			//}else if(tmp_email2){
				if(_email_confirm.value != _email.value){
					alert("Email adresses have to be equal.");
					return false;
				}else{
		 	 	 	return true;
				}
			//}else{
			//	alert("Le format de cet Email n'est pas valide !");
			//	return false;
			//}		
		}		  
	}
	this.checkduree = function(){
		if( document.getElementById('duree1').checked || document.getElementById('duree2').checked ) {return true;}
		else {	alert("Please choose a subscription duration");
			return false;
		}
	}
	this.checkpaiement = function(){
		if( document.getElementById('paiement1').checked || document.getElementById('paiement2').checked ) {return true;}
		else {	alert("Please choose a payement method");
			return false;
		}
	}
	this.checktel = function(){
		if(arguments.length == 0) return false;
		var _tel = eval('document.' + arguments[0] + '.tel');
		if(_tel.value != ''){
			return true;
		}else{
			alert("Your phone number is a required field.");
			return false;
		}
	}
	this.checkValidCp = function(){
		var cpObj = eval('document.' + arguments[0] + '.' + arguments[1]);
		var expCp = /^\d{5}$/;
		if(cpObj.value.match(expCp) || cpObj.value == ''){
			return true;
		}else{
			alert("Your zip code has to be at least 5 number long.");
			cpObj.value = '';
			cpObj.focus();
			return false;
		}
	}
}
//Object FormChecker;
formContact = new formChecker('formContact');

function checkFormContact()
	{
	 // On lance les fonctions 1 � 1 pour voir si tous les param�tres donn�s en argument sont OK
		var error = true;
		for(var i = 2; i < arguments.length; i++)
			{
			var arg = eval('formContact.check' + arguments[i]);
			if(arg(arguments[0])) {		 	
				error = false;
			}
			else
				{
				error = true;
				break;
				}
			}
		
		// S'il n'y a aucune erreur, on lance le traitement de la Popup
		if(!error)
			{
			var _form = eval('document.' + arguments[0]);
			// Si l'argument Popup est rempli, alors on l'ouvre en HTML et on l'indique � la CGI...
			if (arguments[1] != "")
				{			 
				window.open(arguments[1],'POPUP','top='+top_centre(165)+', left='+left_centre(395)+', width=395,height=165,scrollbars=no,status=no,menubar=no');
				}
				
			// On soumet le formulaire
// 			_form.submit();		 
			return 1;
			// On remet le formulaire � zero...
			_form.reset();
		}
		// Ici, il y a une erreur... on sort.
		else				
			return 0;
}


//***************************************************************//
// FONCTION PERMETTANT DE V�RIFIER LE FORMAT D'UNE ADRESSE EMAIL //
//***************************************************************//
function checkEmail(email){
	var i;
	
	// Recherche de @
	i = email.indexOf("@");
	if (i == -1) return false;	
	
	// S�paration du nom de l'utilisateur et du nom de domaine.
	var username = email.substring(0, i);
	var domain = email.substring(i + 1, email.length)

	// Recherche des espaces au d�but du nom de l'utilisateur.
	i = 0;
	while ((username.substring(i, i + 1) == " ") && (i < username.length)){
		i++;
	}
	
	// Les enl�ve s'il en trouve.
	if (i > 0) username = username.substring(i, username.length);
	
	// Recherche d'espaces � la fin du nom de domaine.
	i = domain.length - 1;
	while ((domain.substring(i, i + 1) == " ") && (i >= 0)) {
		i--;
	}
	
	// Les enl�ve s'il en trouve.
	if (i < (domain.length - 1)) domain = domain.substring(0, i + 1);
	
	// V�rifie que le nom de l'utilisateur et du domaine ne soit pas vide.
	if ((username == "") || (domain == ""))	return false;
	
	// V�rifie s'il n'y a pas de caract�res interdits dans le nom de l'utilisateur.
	var ch;
	for (i = 0; i < username.length; i++){
		ch = (username.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || ((ch >= "0") && (ch <= "9")) ||	(ch == "_") || (ch == "-") || (ch == "."))) return false;		
	}
	
	// V�rifie s'il n'y a pas de caract�res interdits dans le nom de domaine
	for (i = 0; i < domain.length; i++){
		ch = (domain.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || ((ch >= "0") && (ch <= "9")) ||	(ch == "_") || (ch == "-") || (ch == "."))){
			return false;
		}
	}

	// Ajouter ci-dessous de nouveaux noms de domaine (une liste sur http://www.toulouse-renaissance.net/c_outils/c-nom-domaine.htm)
	var aSuffix = new Array("com","net","int","aero","biz","museum","name","info","coop","pro","eu","edu","org","gov","gouv","mil","bj","dz","de","ad","be","ca","bf","bi","cm","cf","cg","cd","ci","cn","dj","fr","ga","gp","gf","jp","lu","mg","ml","ma","mq","mr","mc","nc","pf","re","pm","sn","ch","td","tf","tn", "ru", "it", "co.uk", "gov.uk", "uk", "se", "mo", "cz", "pl", "");
	var bFoundSuffix = false;
	i = 0;
	while (i < aSuffix.length){
		if (("." + aSuffix[i]) == domain.substring(domain.length - aSuffix[i].length - 1, domain.length))	return true;		
		i++;
	}
	return true;
	// Si le nom de domaine est inconnu  : return false
	return false;
}