/**
 * update_geo_moteur() - ajax : actualise le formulaire de recherche
 * @param source - select/input source
 * @return
 */
function update_geo_moteur(source)
{
	//source : l'element source
	var parameters = new Hash();
	var type = source.id
	var value = source.value;
	parameters.set('type', type);
	parameters.set('value', value);
	new Ajax.Request('/update-geo-moteur/update/format/xml', {
		asynchronous : false,
		method : 'post',
		parameters : parameters,
		onSuccess : function(transport){
			var root = transport.responseXML.documentElement;
			update_geo_moteur_select(root);
		}
	})
}

/**
 * update_geo_moteur_select() - actualise les select ville/departement/region du formulaire de recherche
 * @param xml - element xml : contient les listes
 * @return
 */
 function update_geo_moteur_select(xml)
 {
 	var sections = xml.childNodes;
	for (i=0; i<sections.length; i++){
		if(sections[i].nodeType == 1){//si c'est un element
			switch (sections[i].nodeName){
				case "villes" :
					var villes = sections[i];
					break;
				case "departements" :
					var departements = sections[i];
					break;
				case "regions" :
					var regions = sections[i];
					break;
			}
		}
	}
	if (villes) updateSelect($('ville'), villes);
	if (departements) updateSelect($('departement'), departements);
	if (regions) updateSelect($('region'), regions);
 }
 
/**
 * updateSelect() - actualise un select à partir d'un élément xml
 * @param select : le select à mettre à jour
 * @param source : xml source
 * @return
 */ 
 function updateSelect(select, source)
 {
 	var items = source.childNodes;
 	var selected = select.childElements().find(function(ele){return !!ele.selected});
 	var value = selected.value;
 	select.innerHTML = "";
 	for (var i=0; i<items.length; i++){
		if (items[i].nodeType==1){
			option = document.createElement("option");
			option.setAttribute("value", items[i].getAttribute("value"));
			option.innerHTML = items[i].getAttribute("text");
			var option = select.appendChild(option);
			if (option.value == value)
				option.selected = true;
		}
	}
 }

function switchCriteres(force)
{
	var popup = document.getElementById("popup");
	if ((popup.style.top == "-5000px" && force==undefined) || force==1 ){
		popup.style.top = "43px";
		return;
	}
	if ((popup.style.top == "43px" && force==undefined) || force==0){
		popup.style.top = "-5000px";
		return;
	}
}

function switchMoteur(force)
{
	switchCriteres(0);
	var conteneur = $('formulaire');
	var formulaire = conteneur.getElementsByTagName('form')[0];
	var switchMoteur = $('switchMoteur');
	
	if (conteneur.style.height == '36px' && force==undefined || conteneur.style.height == '36px' && force==1){
		switchMoteur.style.background = "url(/images/fermer-moteur.png) right top no-repeat";
		switchMoteur.style.width = "33px";
		var t1 = new Tween(conteneur.style,'height',Tween.strongEaseOut,36,152,0.5,'px');
		var t2 = new Tween(formulaire.style,'height',Tween.strongEaseOut,29,135,0.5,'px');
		var t3 = new OpacityTween(formulaire,Tween.strongEaseOut,0,100,0.5);
		formulaire.style.opacity = "0";
		formulaire.style.display = "block";
		t2.onMotionFinished = function(){formulaire.style.overflow = "";}
		t1.start();
		t2.start();
		t3.start();
	}
	if (conteneur.style.height == '152px' && force==undefined || conteneur.style.height == '152px' && force==0){
		switchMoteur.style.width = "150px";
		formulaire.style.overflow = "hidden";
		var t1 = new Tween(conteneur.style,'height',Tween.strongEaseOut,152,36,0.5,'px');
		var t2 = new Tween(formulaire.style,'height',Tween.strongEaseOut,135,29,0.5,'px');
		var t3 = new OpacityTween(formulaire,Tween.strongEaseOut,100,0,0.5);
		var t4 = new OpacityTween(switchMoteur,Tween.strongEaseOut,100,0,0.2);
		var t5 = new OpacityTween(switchMoteur,Tween.strongEaseOut,0,100,0.4);
		t3.onMotionFinished = function(){
			formulaire.style.display = "none";
		}
		t4.onMotionFinished = function(){
			switchMoteur.style.background = "url(/images/changer-criteres.png) center top no-repeat";
			t5.start();
		}
		t1.start();
		t2.start();
		t3.start();
		t4.start();
	}
}


/**
 * addSessionCritere - ajoute un critere de recherche en session.
 */
function addSessionCritere(critere, value)
{
	var parameters = new Hash();
	parameters.set('critere', critere);
	parameters.set('value', value);
	new Ajax.Request('/default/session/add-session-critere/format/html', {
		method: 'post',
		parameters: parameters,
		asynchronous : false
	});
	return true;
}


/**
 * removeSessionCritere - supprime un critere de recherche en session.
 */
function removeSessionCritere(critere)
{
	var parameters = new Hash();
	parameters.set('critere', critere);
	new Ajax.Request('/default/session/remove-session-critere/format/html', {
		method: 'post',
		parameters: parameters,
		asynchronous : false
	});
	return true;
}


/**
 * addSessionOrder - ajoute un ordre d'affichage en session.
 */
function addSessionOrder(order)
{
	var parameters = new Hash();
	parameters.set('order', order);
	new Ajax.Request('/default/session/add-session-order/format/html', {
		method: 'post',
		parameters: parameters,
		asynchronous : false
	});
	return true;
}


/**
 * addCompare - fonction qui permet d'ajouter une location à comparer (en session), vérifie si il n'y en a pas plus de 4.
 */
function addCompare(source, id_dispo)
{
	var add = (source.checked)? 1 : 0;
	var parameters = new Hash();
	parameters.set('id_dispo', id_dispo);
	parameters.set('add', add);
	new Ajax.Request('/default/session/add-compare/format/html', {
		method: 'post',
		parameters: parameters,
		onSuccess : function(transport){
		if(transport.responseText == 0){
			$(''+id_dispo).checked = false;
			alert('Vous ne pouvez pas comparer plus de 4 offres. ');
		}
	}
	});
}

function removeCompare(id_dispo)
{
	if(!id_dispo) return false;
	var add = 0;
	var parameters = new Hash();
	parameters.set('id_dispo', id_dispo);
	parameters.set('add', add);
	new Ajax.Request('/default/session/add-compare/format/html', {
		method: 'post',
		parameters: parameters,
		onSuccess : function(transport){
			window.location.reload();
		}
	});
}

function emptyCompare()
{
	new Ajax.Request('/default/session/empty-compare/format/html');
}
