window.addEvent('domready', function() {
	
	$('recherche-entranger').setStyle('display','none');
	$('recherche-entranger').setStyle('height','auto');
	
	/* Gestion des onglets de la recherche */
	$('tab-france').addEvent('click', function(e) {
		// Changement de fond
		$('tab-france').setStyle('background-position','top');
		$('tab-etranger').setStyle('background-position','top');
		
		// Changement de contenu :
		$('recherche-france').setStyle('display','block');
		$('recherche-entranger').setStyle('display','none');
	});
	
	$('tab-etranger').addEvent('click', function(e) {
		// Changement de fond
		$('tab-france').setStyle('background-position','bottom');
		$('tab-etranger').setStyle('background-position','bottom');
		
		// Changement de contenu
		$('recherche-france').setStyle('display','none');
		$('recherche-entranger').setStyle('display','block');
	});

	if($('tabEtrangerAActiver')){
		// Changement de fond
		$('tab-france').setStyle('background-position','bottom');
		$('tab-etranger').setStyle('background-position','bottom');
		
		// Changement de contenu
		$('recherche-france').setStyle('display','none');
		$('recherche-entranger').setStyle('display','block');
	}
	
	// Reprendre la requete avec la ville de départ Paris
	if($('restartRequeteWithParis')){
		$('restartRequeteWithParis').addEvent('click',function(){
			$('formRestartRequeteWithParis').submit();
		});
	}
	
	/* Valider la présence d'au moins un adulte lors du submit */
	$('form-france').addEvent('submit', function(e) {
		if (!validateInt($('recherche-france-enfants').get('value'))) {
			alert('Veuillez saisir un nombre d\'enfants valide...');
			return false;
		}
		var inputAgesEnfants = $('france-enfants').getElements('.checkageenfant');
		
		var enfantStop = false;
		var erreur = "";
		$each(inputAgesEnfants, function(child, index){
			var val = child.get('value');
			if (val=='' || !validateInt(val)) {
				erreur += 'L\'age de l\'enfant n°'+(index+1)+' n\'est pas valide...\n';
				enfantStop = true;
				return false;
			} else {
				var intVal = parseInt(val)
				if (intVal == 0 || intVal >= 18) {
					erreur += 'L\'age de l\'enfant n°'+(index+1)+' est incorrect : Les enfants doivent être agés de moins de 18 ans.\n';
					enfantStop = true;
					return false;
				}
			}
		});
			
		if (validateInt($('recherche-france-adultes').get('value')))
		{
			if (parseInt($('recherche-france-adultes').get('value'))>0) {
				if($('moteurPourBack')){
					validatePourBack('france');
					return false;
				}
				return true;
			}
		}
		erreur += 'Veuillez saisir un adulte au minimum...\n';

		if(erreur != ""){
			alert(erreur);
			return false;
		}else{
			if($('moteurPourBack')){
				validatePourBack('france');
				return false;
			}
			return true;
		}
	});
	$('form-etrangers').addEvent('submit', function(e) {
		if (!validateInt($('recherche-etrangers-enfants').get('value'))) {
			erreur += 'Veuillez saisir un nombre d\'enfants valide...\n';
			return false;
		}
		var inputAgesEnfants = $('etrangers-enfants').getElements('.checkageenfant');
		
		var enfantStop = false;
		$each(inputAgesEnfants, function(child, index){
			var val = child.get('value');
			if (val=='' || !validateInt(val)) {
				erreur += 'L\'age de l\'enfant n°'+(index+1)+' n\'est pas valide...\n';
				enfantStop = true;
				return false;
			} else {
				var intVal = parseInt(val)
				if (intVal == 0 || intVal >= 18) {
					erreur += 'L\'age de l\'enfant n°'+(index+1)+' est incorrect : Les enfants doivent être agés de moins de 18 ans.\n';
					enfantStop = true;
					return false;
				}
			}
		});
			
		if (validateInt($('recherche-etrangers-adultes').get('value')))
		{
			if (parseInt($('recherche-etrangers-adultes').get('value'))>0) {
				if($('moteurPourBack')){
					validatePourBack('etrangers');
					return false;
				}
				return true;
			}
		}
		erreur += 'Veuillez saisir un adulte au minimum...\n';
		
		if(erreur != ""){
			alert(erreur);
			return false;
		}else{
			if($('moteurPourBack')){
				validatePourBack('etrangers');
				return false;
			}
			return true;
		}
	});
	
	/* Sliders pour la flexibilité */
	var el = $('slide-flexibilite-france');
	new Slider(el, el.getElement('.knob'), {
		/*steps: 8,*/
		range: [0,7],
		offset: 0,
		wheel: true,
		mode: 'horizontal',
		onChange: function(value){
			el.getParent().getElement('.count').set('html',value+' j.');
			el.getElement('.slide-value').set('value',value);
		}
	}).set(el.getElement('.slide-value').get('value').toInt());
	
	var el2 = $('slide-flexibilite-etranger');
	new Slider(el2, el2.getElement('.knob'), {
		/*steps: 8,*/
		range: [0,7],
		offset: 0,
		wheel: true,
		mode: 'horizontal',
		onChange: function(value){
			el2.getParent().getElement('.count').set('html',value+' j.');
			el2.getElement('.slide-value').set('value',value);
		}
	}).set(el2.getElement('.slide-value').get('value').toInt());
	
	/* Fonction validant un entier a partir d'une chaine de caractères */
	function validateInt(maChaine){
		if(parseInt(maChaine)==maChaine) return true;
		return false;
	}
	
	function updateAges(localite) {
		// Récupération de la valeur et tests de validité
		var val = $('recherche-'+localite+'-enfants').get('value');
		var done = validateInt(val);

		if (!done || val=='') {
			// $('recherche-'+localite+'-'+type+'s').set('value','');
			var nbPers = 0;
			// return false;
		} else {
			var nbPers = parseInt(val);
		}
		
		// Récupération du nombre d'input déjà présents
		var input = $$('tr.div-age-enfant-'+localite);
		var nbInput = input.length;

		// Ajout ou suppression d'input
		if (nbPers > nbInput) {
			// Il faut en rajouter
			for (i=nbInput+1; i<=nbPers; i++) {
				
				/*
				 * <tr class="div-age-enfant-france" id="div-age-enfant-france-1">
				 * 	<td>Age de l'enfant n°1 </td>
				 * 	<td><input type="text" value="" maxlength="2" size="2" class="checkageenfant onlynumbers" name="ageenfant-1"> ans</td>
				 * </tr>
				 */
				
				var maLigne = new Element ( 'tr' , {
					'id' : 'div-age-enfant'+'-'+localite+'-'+i,
					'class' : 'div-age-enfant'+'-'+localite
				});
				var cell1 = new Element ('td', { 'html' : 'Age de l\'enfant n°'+i+' '} );
				var cell2 = new Element ('td');
				var champInput = new Element ( 'input' , {
					'type' : 'text',
					'name' : 'ageenfant-'+i,
					'size' : '2',
					'class': 'checkageenfant onlynumbers',
					'maxLength' : '2'
				});		
				champInput.injectInside(cell2);
				cell2.appendText(' ans');
				
				cell1.injectInside(maLigne);
				cell2.injectInside(maLigne);
				maLigne.inject($$('#'+localite+'-enfants tbody')[0]);
			}
			
		} else if (nbPers < nbInput) {
			// Il faut en supprimer
			for (i=nbPers+1; i<=nbInput; i++) {
				$('div-age-enfant-'+localite+'-'+i).dispose();
			}
		}
	}
	
	/* Gestion du masque des champs de type entier */
	
	/* Gestion du nombre d'adultes et d'enfants pour la France */
	/*
	$('recherche-france-adultes').addEvent('keyup', function(e) {
		updateAges('france', 'adulte', false);
	});
	*/
	var nbEnfants = 0;
	$('recherche-france-enfants').addEvent('keyup', function() {
		var val = parseInt($('recherche-france-enfants').value,10);
		if (!isNaN(val))
		{
			if (val > 5) {
				val = 5;
				$('recherche-france-enfants').value=5;
			}
			nbEnfants = val;
			return updateAges('france');
		}
	});
	
	/* Gestion du nombre d'adultes et d'enfants pour l'Etranger */
	/*
	$('recherche-etrangers-adultes').addEvent('keyup', function() {
		updateAges('etrangers', 'adulte', false);
	});
	*/
	var nbEnfantsEtrangers = 0;
	$('recherche-etrangers-enfants').addEvent('keyup', function() {
		var val = parseInt($('recherche-etrangers-enfants').get('value'),10);
		if (!isNaN(val))
		{
			if (val > 5) {
				val = 5;
				$('recherche-france-enfants').value=5;
			}
			nbEnfantsEtrangers = val;
			return updateAges('etrangers');
		}
	});
	
	
	/* Gestion des ages des enfants */
	/*
	$$('.checkageenfant').addEvent('keyup', function(e) {
		var val = this.get('value');
		var values = new Array("0","1","2","3","4","5","6","7","8","9");
		
		var done = true;
		for (var i=0; i<val.length;i++)
		{
			var found = false;
			for (var j=0; j<values.length; j++) {
				if (val[i]==values[j])
					found = true;
			}
			if (!found) { done=false; break; }
		}
		
		if (!done) {
			this.set('value','');
		} else {
			var age = parseInt(val);
			if (age>17) this.set('value','');
		}
	});
	*/
	

	// Dans la région FRANCE, mise à jour des régions en fonction du type de vacances
	$('recherche-france-theme').addEvent('change', function(e) {
		majChampRegionFrance();
		$('recherche-france-region').value = '';
		majChampDepartementFrance();
	});
	
	// Dans la région FRANCE, mise à jour des départements en fonction de la région sélectionnée
	$('recherche-france-region').addEvent('change', majChampDepartementFrance);
	
	// A l'étranger, mise à jour des villes en fonction du pays sélectionné
	$('recherche-etranger-pays').addEvent('change', function(e) {
		var myRequest = new Request({
			method:  'post',
			url:  'moteur_recherche',
			data: 'monAction=getVilles&idPays='+$('recherche-etranger-pays').get('value'),
			onRequest: function() {},
            onComplete: function(response) {},
			onFailure: function(response) { 
				alert('Aucune ville disponible...');
			},
			onSuccess: function(response) {
				if (response=='BAD_PARAMETERS' || response=='BAD_ACTION' || response=='NO_ACTION') { 
					$('recherche-etranger-ville').set('html','<option value="">-- Toutes --</option>');
					//$('recherche-etranger-ville').set('disabled','disabled');
					alert('Aucune ville disponible...'); 
					return; 
				}
				if (response=='NO_RESULT') {
					$('recherche-etranger-ville').set('html','<option value="">-- Toutes --</option>');
					//$('recherche-etranger-ville').set('disabled','disabled');
					return;
				}
				$('recherche-etranger-ville').set('html',response);
				//$('recherche-etranger-ville').set('disabled','');
			}
		}).send();
	});

});

function majChampDepartementFrance(){
	var myRequest = new Request({
		method:  'post',
		url:  'moteur_recherche',
		data: 'monAction=getDepartments&idRegion='+$('recherche-france-region').get('value'),
		onRequest: function() {},
	    onComplete: function(response) {},
		onFailure: function(response) { 
			alert('Aucun département disponible...');
		},
		onSuccess: function(response) {
			if (response=='BAD_PARAMETERS' || response=='BAD_ACTION' || response=='NO_ACTION') { 
				$('recherche-france-departement').set('html','<option value="">-- Tous --</option>');
				//$('recherche-france-departement').set('disabled','disabled');
				alert('Aucun département disponible...'); 
				return; 
			}
			if (response=='NO_RESULT') {
				$('recherche-france-departement').set('html','<option value="">-- Tous --</option>');
				//$('recherche-france-departement').set('disabled','disabled');
				return;
			}
			$('recherche-france-departement').set('html',response);
			//$('recherche-france-departement').set('disabled','');
		}
	}).send();
}

function majChampRegionFrance(){
	var myRequest = new Request({
		method:  'post',
		url:  'moteur_recherche',
		data: 'monAction=getRegionsFrance&idTheme='+$('recherche-france-theme').get('value'),
		onRequest: function() {},
	    onComplete: function(response) {},
		onFailure: function(response) { 
			alert('Aucune région disponible...');
		},
		onSuccess: function(response) {
			if (response=='ko') { 
				$('recherche-france-region').set('html','<option value="">-- Tous --</option>');
				alert('Aucune région disponible...'); 
				return; 
			}
			$('recherche-france-region').set('html',response);
		}
	}).send();
}

function validatePourBack(pays){
	document.domain = $('moteurPourBack').value;
	//parent.wait();
	var myRequest = new Request({
		method:  'post',
		url:  'resultats_moteur_pour_back',
		data: $('form-'+pays),
		onSuccess: function(response) {
			parent.resultatIframe(response);
		}
	}).send();
}
