// Javascript du template de recherche

var mode = 'simple';
var helpMsg = {
	 'motcle' : 'Autres critères : ' + helpMsgKeywords,
	 'lieu' : 'Où ? (villes, départements...)',
	 'nb_chambre' : 'Nbre de chambres min.',
	 'prix_min' : 'Prix min.',
	 'prix_max' : 'Prix max.',
	 'surf_min' : 'Surface min.',
	 'surf_max' : 'Surface max.'
};
var helpMsgFields = ['motcle','lieu','nb_chambre','prix_min','prix_max','surf_min','surf_max'];

/** 
 * Fonction de clic des éléments parents
 */
function parentClic(element) {
	// Récupération des descendants de l'élément courant
	element.parentNode.parentNode.descendants().each(
		function(ssElement)
		{
			// On ne lance pas le cochage de l'élement courant en vérifiant qu'on est sur de la checkbox
			if ((ssElement.getAttribute("type") == 'checkbox') && (ssElement.identify() != element.identify())) {
				/* On déclenche le click (cochage de la case + lancement du onclick) */
				ssElement.click();
			}
		}
	);
}

function toggleRech(id_toHide, id_toShow)
{
	var toHide = document.getElementById(id_toHide);
	var toShow = document.getElementById(id_toShow);
	// On met l'ombre si le div gmap n'est pas affiché et qu'on est en mode simple
	if (mode == 'simple' && $('rech_carto').style.display == 'none')
	{
		$('form_search').addClassName('ombre');
	}
	// Si la map est affiché et que nous sommes en mode simple
	else if ($('rech_carto').style.display == 'block' && mode == 'simple')
	{
		$('form_search').removeClassName('ombre');
	}
	toHide.style.display = 'none';
	toShow.style.display = 'block';
	if ($('gmapFrame').src=='')
	{
		$('gmapFrame').src = '/themes/defaut/googlemap.php?rub='+document.formulaire.rub.value;
	}
}

function updateChampAuto(field)
{
	if (field != '')
	{
		var typeAuto = new Array();
		var carrosserieAuto = new Array();
		for (bcl=0; bcl<document.formulaire["r[]"].length; bcl++)
		{
			element = document.formulaire["r[]"][bcl];
			if (element.checked && element.value.startsWith('AUT001001|'))
			{
				array = element.value.split('|');
				if (array[1] == 'T')
					typeAuto.push(array[2]);
				else
					carrosserieAuto.push(array[2]);
			}
		}

		var pars = {
			'type': 'auto',
			'select': field,
			'vehtype[]': typeAuto,
			'carrosserie[]': carrosserieAuto,
			'marque': $('formulaire').marqueAuto.value
		};

		new Ajax.Updater(field+'_bloc', "/ajax.php", {method: 'get', parameters: pars, onCreate: function(transport) { $('indicator1').show(); }, onComplete: function(transport) { $('indicator1').hide(); updateChampAutoCallback(field, transport); }});
	}
}

function updateChampAutoCallback(field, transport)
{
	if (field == 'marqueAuto' && req_marqueAuto != null)
	{
		$('formulaire').marqueAuto.value = req_marqueAuto;
		req_marqueAuto=null;
		updateChampAuto('modeleGroupAuto');
	}
	if (field == 'modeleGroupAuto' && req_modeleGroupAuto != null)
	{
		$('formulaire').modeleGroupAuto.value = req_modeleGroupAuto;
		req_modeleGroupAuto=null;
	}
}

function verifChampAuto(input)
{
	var msg = '';
	switch(input.name)
	{
		case 'ann_min' :
		case 'ann_max':
			if( isNaN(input.value) )
				msg = 'Vous devez entrer une année au format AAAA.';
		break;
	}
	if (msg != '')
	{
		input.value = '';
		alert(msg);
		input.focus();
	}
}

/**
 * Fonction qui affiche dans le cadre les éléments qui ont été cochés par l'utilisateur.
 */
function choice(obj)
{
	// Le formulaire de recherche
	form = $('formulaire');
	if (obj != undefined)
	{
		$('inputsearch').innerHTML = $('inputsearch').innerHTML.replace(defaultSearchLabel, '');
		if (typeof(rubriques[obj.value])=='undefined')
		{
			if (typeof(rubriques[obj.value.substr(0,9)]) != 'undefined')
			{
				// On ne prend que les input qui ne sont pas des sections
				if (typeof(rubriques[obj.value.substr(0,9)]['ss_rub'])!='undefined') {
					for (j=0;j<rubriques[obj.value.substr(0,9)]['ss_rub'].length;j++) {
						// On cherche la valeur de la rubrique qui a été cochée/décochée
						if(rubriques[obj.value.substr(0,9)]["ss_rub"][j]["ss_rub_code"] == obj.value) {
							if (obj.checked)
							{
								// On ajoute la valeur qui a été cochée
								$('inputsearch').innerHTML += rubriques[obj.value.substr(0,9)]["ss_rub"][j]["ss_rub_libelle"] +', ';
							}
							else
							{
								// Enlève la valeur qui a été décochée
								$('inputsearch').innerHTML = $('inputsearch').innerHTML.replace(rubriques[obj.value.substr(0,9)]["ss_rub"][j]["ss_rub_libelle"] +', ', '');
								// On décoche obligatoirement la section (elle ne peut être cochée que si tous ces élements sont cochés)
								$('rub_'+obj.value.substr(0,9)).checked = false;
							}
						}
					}
				}
			}
			// Même système mais sur un code 6 (voir 2nd regroupement auto)
			else if (typeof(rubriques[obj.value.substr(0,6)]) != 'undefined')
			{
				// On ne prend que les input qui ne sont pas des sections
				if (typeof(rubriques[obj.value.substr(0,6)]['ss_rub'])!='undefined') {
					for (j=0;j<rubriques[obj.value.substr(0,6)]['ss_rub'].length;j++) {
						// On cherche la valeur de la rubrique qui a été cochée/décochée
						if(rubriques[obj.value.substr(0,6)]["ss_rub"][j]["ss_rub_code"] == obj.value) {
							if (obj.checked)
							{
								// On ajoute la valeur qui a été cochée
								$('inputsearch').innerHTML += rubriques[obj.value.substr(0,6)]["ss_rub"][j]["ss_rub_libelle"] +', ';
							}
							else
							{
								// Enlève la valeur qui a été décochée
								$('inputsearch').innerHTML = $('inputsearch').innerHTML.replace(rubriques[obj.value.substr(0,6)]["ss_rub"][j]["ss_rub_libelle"] +', ', '');
								// On décoche obligatoirement la section (elle ne peut être cochée que si tous ces élements sont cochés)
								$('rub_'+obj.value.substr(0,6)).checked = false;
							}
						}
					}
				}
				// alert(obj.value.substr(0,9));
			}
		}
		else
		{
			if (obj.checked)
			{
				// On ajoute la valeur qui a été cochée
				$('inputsearch').innerHTML += rubriques[obj.value]['lib'] +', ';
			}
			else
			{
				// Enlève la valeur qui a été décochée
				$('inputsearch').innerHTML = $('inputsearch').innerHTML.replace(rubriques[obj.value]['lib'] +', ', '');
			}

			// Specifique AUTO
			if (obj.value.startsWith('AUT001001|'))
			{
				updateChampAuto('marqueAuto');
			}
		}
		// Si case vide on remet le texte de base
		if ($('inputsearch').innerHTML == '') $('inputsearch').innerHTML = defaultSearchLabel;
	}
	// Dans le cas du choice lancé pour mettre les valeurs au chargement
	else
	{
		for (i=0;i<form.length;i++)
		{
			// On prend les element de type checkbox et qui sont checked
			if (form.elements[i].type == 'checkbox') {
				// si on a des sous rubriques
				if ((typeof(rubriques[form.elements[i].value.substr(0,9)]) != 'undefined') && (typeof(rubriques[form.elements[i].value.substr(0,9)]['ss_rub']) != 'undefined'))
				{
					// On repasse dans ses enfants
					for (j=0;j<rubriques[form.elements[i].value.substr(0,9)]['ss_rub'].length;j++)
					{
						// Si le chebox en cours a été coché et que les valeurs entre le formulaire et la rubrique
						if((rubriques[form.elements[i].value.substr(0,9)]["ss_rub"][j]["ss_rub_code"] == form.elements[i].value) && form.elements[i].checked)
						{
							// On ajoute la valeur
							$('inputsearch').innerHTML += rubriques[form.elements[i].value.substr(0,9)]["ss_rub"][j]["ss_rub_libelle"] +', ';
							$('inputsearch').innerHTML = $('inputsearch').innerHTML.replace(defaultSearchLabel, '');
						}
					}
				}
				// Si on a des rubriques simples
				else
				{
					// Si on trouve le libellé de la rubrique et que la case est cochée
					if ((typeof(rubriques[form.elements[i].value]) != 'undefined') && (typeof(rubriques[form.elements[i].value]['lib']) != 'undefined') && form.elements[i].checked)
					{
						// On ajoute la valeur qui a été cochée
						$('inputsearch').innerHTML += rubriques[form.elements[i].value]["lib"] +', ';
						$('inputsearch').innerHTML = $('inputsearch').innerHTML.replace(defaultSearchLabel, '');
					}
				}
			}
		}
	}
	return true;
}

function changeMode(element)
{
	// Si on est en mode simple
	if (mode == 'simple')
	{
		element.innerHTML = 'Recherche simple';
		/*
			Effect.Fade('form_search', {duration : 0.8});
			Effect.Appear('form_search', {duration : 0.5, queue: 'end'});
			Effect.Pulsate('form_search', {pulses: 2, duration : 0.5, queue: 'end'});
		*/
		$('form_search').className = 'ombre';
		$$('#form_search .avancee').each(function (s) { s.style.display = 'block'; })
		mode = 'avancee';
	}
	else
	{
		element.innerHTML = 'Recherche avancée';
		$('form_search').removeClassName('ombre');
		$$('#form_search .avancee').each(function (s) { s.style.display = 'none'; })
		mode = 'simple';
	}
}
document.observe("dom:loaded", function() {
	if ($('inputsearch') != undefined) $('inputsearch').innerHTML = defaultSearchLabel;
	// Préparations des checkboxes
	if ($('liste-rubrique') != null && req_r != null) {
		req_r.each(function(item) {
			$('rub_'+item).checked = true;
		});
	}
	choice();
	if (specificAuto) {
		updateChampAuto('marqueAuto');
	}

	helpMsgFields.each(function(elt) {
		if ($(elt)) {
			if ($(elt).value == '') $(elt).value = helpMsg[elt];
			$(elt).observe('focus', function() {
				if (this.value == helpMsg[elt]) this.value = '';
			});
			$(elt).observe('blur', function() {
				if (this.value == '') this.value = helpMsg[elt];
			});
		}
	});

	$('formulaire').observe('submit', function() {
		helpMsgFields.each(function(elt) {
			if ($(elt) && $(elt).value == helpMsg[elt]) $(elt).value = '';
		});
	});

  if ($('liste-rubrique'))
  {
  	var t = 0; // timeout Variable
  	Event.observe(document, 'click', function(event) { testCloseBox(event) });
  	Event.observe(document, 'mouseover', function(event) { testCloseBox(event, 2) });
  
  	$('inputsearch').observe('click', function() {
  		if ($('liste-rubrique').hasClassName('over')) {
  			$('liste-rubrique').removeClassName('over');
  		}
  		else {
  			$('liste-rubrique').addClassName('over');
  			clearTimeout(t);
  		}
  	});
  	$('liste-rubrique').observe('mouseover', function() {
  		clearTimeout(t);
  		t = 0;
  	});
  
  	function testCloseBox(event, timeout)
  	{
  		var element = Event.element(event);
  		// Si liste-rubrique a comme class over et l'élement sur lequel on est n'est pas fils de liste-rubrique
  		if (($('liste-rubrique').hasClassName('over')))
  		{
  			// Si le curseur est sorti
  			if ((!element.descendantOf('liste-rubrique')) && (element.identify() != 'liste-rubrique'))
  			{
  				if (timeout)
  				{
  					if (!t) t = setTimeout("$('liste-rubrique').removeClassName('over')", 1000);
  				}
  				else
  				{
  					// On enlève la classe over
  					$('liste-rubrique').removeClassName('over');
  				}
  			}
  		}
  	}
	}
});

