
function showPopup(insee){
		var url = '/typo3conf/ext/communes/res/popup.php?insee='+insee;
				
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(result) {
		    $('popup_carte').update(result.responseText);
		    $('popup_carte').show();
		  }
		});
}

controlFormulaire = {
	/***
	*	function	initilalise les variables de l'objet
	***/
	load	: function()
	{
	},

	/***
	*	function	control qu'un contenu existe pour un élément et prépare le message d'erreur
	*	@param		String		idChamps : l'id du champs à controler.
	*	@param		String		labelChamps : le label du champs.
	***/
	verifSaisie	: function(idChamps, labelChamps)
	{
//		alert(labelChamps);
		if(!$(idChamps).present())
		{
			this.errorMessage			+=	labelChamps+"<br />";
			this.afficheErrorMessage	=	true;	
		}
	},

	/***
	*	function	control qu'une date est valide
	*	@param		String		idChamps : l'id du champs à controler.
	*	@param		String		labelChamps : le label du champs.
	***/
	verifDate	: function(idChamps, labelChamps)
	{
//		alert(labelChamps);
		var dateRegEx = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
		
		if(!$F(idChamps).match(dateRegEx))
		{
			this.errorMessage			+=	labelChamps+"<br />";
			this.afficheErrorMessage	=	true;			
		}
	},

	/***
	*	function	control que l'e-mail est valide
	*	@param		String		idChamps : l'id du champs à controler.
	*	@param		String		labelChamps : le label du champs.
	***/
	verifMail	: function(idChamps, labelChamps)
	{
		erreur	=	false;
//		alert(labelChamps);
//		ok = "/1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";
//		for(i=0; i < $F(idChamps).length ;i++)
//		{ 
//			if(ok.indexOf($F(idChamps).charAt(i))<0)
//			{ 
//				erreur	=	true;
//			} 
//		} 
//		test	=	$F(idChamps);
//		re 		= 	/(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
//		re_two 	= 	/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{2,6})(\]?)$/;
		//alert(test.match(re_two));
		
		var regEmail = /^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@([a-zA-Z0-9-]{2,}[.])+[a-zA-Z]{2,}$/;
		var verifEmail = regEmail.test($F(idChamps));

		if (!verifEmail)
		{
			this.errorMessage			+=	labelChamps+"<br />";
			this.afficheErrorMessage	=	true;			
		}
		
	},

	/***
	*	function	control que l'un des champs radio ou checkbox est coché et prépare le message d'erreur
	*	@param		String		typeInput : le type de l'input (radio/checkbox)
	*	@param		String		nameChamps : le name du champs input
	*	@param		String		labelChamps : le label du champs.
	***/
	verifChecked : function(typeInput, nameChamps, labelChamps,form)
	{
		//alert(form);
		var test	=	$(form).getInputs(typeInput, nameChamps).find(function(re) { //alert('fil' + re.checked);
																						   return re.checked; });
		if(!$(test))
		{		
			this.errorMessage			+=	labelChamps+"<br />";
			this.afficheErrorMessage	=	true;			
		}
		//alert('err' + this.afficheErrorMessage);
	},
	
	
	/************* VERIF SI UN NOMBRE DE RADIO OU CHECKBOX EST COCHE *******************
* champs=> nom du champs
* nbcheck=> nombre de case coché maxi : 1 pour les radio. numéric
* typetest => si true c'est que nbcheck est le nombre mini et maxi. true/false. false pour les radio.
* afficheMessage=> affiche le message ou non. true/false
* nomFormuaire=> nom du formulaire
* intituleChamps=> Nom du champs qui sera affiché dans le message d'erreur
*/
	verifCheckNb : function(champs,nbcheck,typetest,intituleChamps,nomFormuaire)
{
	
	messageNonCoche='Merci de répondre à la question '+intituleChamps;// message par défaut
	messageNbReponseFalse='Merci de choisir '+nbcheck+' réponse(s) au maximum pour la question '+intituleChamps;
	
	
	message=messageNonCoche
	testcheck=false;
	check=false;
	testnb=0;
	
	//compte le nombre de cases cochées
	for (i=0;i<document.forms[nomFormuaire].elements[champs].length;i++)
	{
		if (document.forms[nomFormuaire].elements[champs][i].checked)
		{		
			testcheck=true;
			testnb++;
		}
	}
	//alert(testnb);
	// si on attend un nombre exact de réponse (checkbox/radio)
	if (typetest)
	{
		if (testcheck && testnb==nbcheck)
		{
			check=true;
		}
		
		//nombre attendu non atteint ou dépassé. Modif du message d'alert
		else 
		{
			message=messageNonCoche
		}
	}
	
	//peut avoir moins ou égale de réponse que le maxi attendu
	else
	{
		//alert(testnb);
		if (testnb<=nbcheck)
		{
			check=true;
		}
	}
	
	//affiche le message si demandé
	if (!check)
	{
		this.errorMessage			+=	messageNbReponseFalse+"<br />";
		this.afficheErrorMessage	=	true;			

		//alert(message);
	}
		//return check
},
	
	/***
	*	function	control que la saisie soit numérique et de la taille attendu et prépare le message d'erreur
	*	@param		String		nbChiffre : le nombre de chiffre que doit comporter la saisie si > 0.
	*	@param		String		idChamps : idChamps : l'id du champs à controler.
	*	@param		String		labelChamps : le label du champs.
	***/
	verifNumber : function(idChamps, labelChamps, nbChiffre)
	{
		if(isNaN($F(idChamps)) || Math.round($F(idChamps)) != $F(idChamps) || $F(idChamps).length != nbChiffre )
		{		
//			alert(labelChamps);
			this.errorMessage			+=	labelChamps+"<br />";
			this.afficheErrorMessage	=	true;			
		}
	},

	
	/***
	*	function	effectue divers controles sur les champs du formulaire
	*	@return		Boolean		retourne true, si tous les controles sont passés / False : affiche un message d'erreur indiquant les champs erronés
	***/
	verifFormulaire	: function(event)
	{
		this.errorMessage			=	'<span class="titre">Les champs suivants ne sont pas correctement saisis:</span><br /><br />';
		this.afficheErrorMessage	=	false;

//		this.verifSaisie('magasin', 'Magasin');
//		this.verifSaisie('nom', 'Nom');
//		this.verifSaisie('prenom', 'Prénom');
//		this.verifMail('email', 'Adresse email');
//		this.verifSaisie('postal', 'Adresse postale');
//		this.verifNumber('codepostal', 'CP',5);
//		this.verifSaisie('ville', 'Ville');
//		//this.verifDate('votrenaissance', 'Votre date de naissance');
//		//this.verifSaisie('votrestatut', 'Votre statut');
//		this.verifChecked('radio', 'q1' , 'Question 1');
//		this.verifChecked('radio', 'q2', 'Question 2');
//		this.verifChecked('radio', 'q3', 'Question 3');
		
		this.verifChecked('checkbox', 'file[]' , 'fichiers',event);
		
		
		/** Si une erreur est rencontré, affichage du message d'erreur et on ne valid pas le formulaire **/
		if(this.afficheErrorMessage)
		{
			alert ('Merci de sélectionner au moins un document à télécharger');
			return false;
		}
	},
	
		verifGrc: function(event)
	{
		this.errorMessage			=	'<span class="titre">Les champs suivants ne sont pas correctement saisis:</span><br /><br />';
		this.afficheErrorMessage	=	false;

		this.verifSaisie('collectivite', 'Votre collectivit&eacute;');
		this.verifSaisie('nom', 'Votre nom');
		this.verifSaisie('fonction', 'Votre fonction');
		this.verifMail('mail', 'Votre e-mail');
		
		this.verifChecked('radio', 'relation_citoyen' , 'Y-a-t-il dans votre collectivit&eacute; une unit&eacute; d&eacute;di&eacute;e &agrave; la gestion de la relation avec les citoyen ?','grc');
		/** cas oui **/
		if($('relation_citoyen_oui').checked){
			this.verifSaisie('perimetre_mission', 'Si Oui, pouvez vous en d&eacute;crire en quelques mots son p&eacute;rim&egrave;tre de mission');
			this.verifChecked('radio', 'agit_il' , 'S\'agit-il ..','grc');
			this.verifChecked('radio', 'ratacher' , 'Cette unit&eacute; est elle rattach&eacute;e','grc');
		}
		
		/** cs non **/
		if($('relation_citoyen_non').checked){
			this.verifChecked('radio', 'prochainement' , 'Si Non, envisagez vous de cr&eacute;er prochainement une telle unit&eacute; ?','grc');
		}

		
		this.verifChecked('radio', 'enjeu_demarche' , 'Estimez vous ma&icirc;triser les enjeux d\'une d&eacute;marche de type "Gestion de la Relation Citoyen" ?','grc');
		this.verifChecked('radio', 'evolution_favorise' , 'Avez vous d&eacute;j&agrave; engag&eacute; des &eacute;volutions d\'organisation pour favoriser la Gestion de la Relation Citoyen ?','grc');
		this.verifChecked('radio', 'informatisation' , 'Avez vous d&eacute;j&agrave; proc&eacute;d&eacute; &agrave; l\'informatisation d\'&eacute;changes entre la mairie et les citoyens ?','grc');
		/** cas oui **/
		if($('informatisation_oui').checked){
			this.verifChecked('checkbox', 'domaines[]' , 'Si oui, dans quels domaines','grc');
			//function(champs,nbcheck,typetest,intituleChamps,nomFormuaire)
			this.verifCheckNb('domaines[]',5,false, 'Si oui, dans quels domaines','grc');
			if($('domaines_10').checked){
				this.verifSaisie('domaine_autre', 'Domaines : Si Autre, pr&eacute;cisez :');
			}

		}
		
		this.verifChecked('radio', 'courrier_informatise' , 'La gestion du courrier des habitants est elle informatis&eacute;e et d&eacute;mat&eacute;rialis&eacute;e (circulation &eacute;lectronique des courriers)','grc');
		this.verifChecked('radio', 'optimisation' , 'L\'optimisation de la "Gestion de la Relation Citoyen" fait elle partie des objectifs des &eacute;lus ?','grc');
		this.verifChecked('radio', 'Demandes_d_interventions' , 'Demandes d\'interventions (voirie, ...)','grc');
		this.verifChecked('radio', 'Inscriptions_aux_prestations_péri_scolaires' , 'Inscriptions aux prestations péri scolaires (cantine, accueil du matin et du soir, étude)','grc');
		this.verifChecked('radio', 'Inscription_aux_centres_de_loisirs' , 'Inscription aux centres de loisirs','grc');
		this.verifChecked('radio', 'Paiement_de_prestations' , 'Paiement de prestations','grc');
		this.verifChecked('radio', 'Demandes_d_actes' , 'Demandes d\'actes','grc');
		this.verifChecked('radio', 'Chat_avec_le_maire_ou_les_élus' , 'Chat avec le maire ou les élus','grc');
		this.verifChecked('radio', 'Circulation_et_suivi_du_courrier_des_habitants' , 'Circulation et suivi du courrier des habitants','grc');
		this.verifChecked('radio', 'architecture_information' , 'L\'achitecture de votre syst&egrave;me d\'information vous permet elle d\'envisager facilement ce type de projet','grc');
		this.verifChecked('radio', 'contraintes' , 'Y-a-t-il d\'autres contraintes &agrave; surmonter pour lancer la mise en oeuvre d\'un tel chantier dans votre collectivit&eacute; ?','grc');
		/** cas oui **/
		if($('contraintes_oui').checked){
			this.verifSaisie('contrainte_precisez', 'Contraintes : Si Oui, pr&eacute;cisez :');
		}
		
		this.verifChecked('radio', 'disposition_offre' , 'La mise &agrave; disposition d\'une telle offre vous para&icirc;t, pour votre collectivit&eacute;','grc');
		this.verifChecked('checkbox', 'apprecie[]' , 'Qu\'appr&eacute;cieriez vous le plus dans cette offre ?','grc');
		this.verifCheckNb('apprecie[]',4,false, 'Qu\'appr&eacute;cieriez vous le plus dans cette offre ?','grc');
		/** cas oui **/
		if($('apprecie_5').checked){
			this.verifSaisie('apprecie_autre', 'Qu\'appr&eacute;cieriez vous le plus dans cette offre ? : Si Autre, pr&eacute;cisez :');
		}

		
		
//		this.verifSaisie('nom', 'Nom');
//		this.verifSaisie('prenom', 'Prénom');
//		this.verifMail('email', 'Adresse email');
//		this.verifSaisie('postal', 'Adresse postale');
//		this.verifNumber('codepostal', 'CP',5);
//		this.verifSaisie('ville', 'Ville');
//		//this.verifDate('votrenaissance', 'Votre date de naissance');
//		//this.verifSaisie('votrestatut', 'Votre statut');
//		this.verifChecked('radio', 'q1' , 'Question 1');
//		this.verifChecked('radio', 'q2', 'Question 2');
//		this.verifChecked('radio', 'q3', 'Question 3');
		
		
		
		
		/** Si une erreur est rencontré, affichage du message d'erreur et on ne valid pas le formulaire **/
		if(this.afficheErrorMessage)
		{
			$('errorGrc').update(this.errorMessage);
			window.scrollTo(0,0)
			return false;
		}
	}

}

function zipFile(form){
	//alert($(form));
	//test	=	controlFormulaire.verifChecked('checkbox', 'file[]' , 'fichiers',form.identify());
	test =  controlFormulaire.verifFormulaire(form.identify());
	//alert (this.afficheErrorMessage);
	return test;
}
