/* gestion du tri et filtre du tableau de comparaison */

var delay = 300;
var myTimer = null;
var service_type = null;
var sort = 1;
var order = 'desc';
var next = null;

window.addEvent('domready',function(){
	// on place les handlers sur les differents controles du formulaire
	//nombre_heures_semaine
	//activerControles();
	// on verifie qu'il y a des resultats
	if($('tableau_comparaison')){
		service_type = $('service_type').value;
		modifierPagination();
		ajouterTri();
	 	if(service_type == 'ServiceRegulier'){
	 		if($('critere')){
	 			$('critere').addEvent("change",function(){charger();});
	 		}
		 	$('nombre_mois').addEvent("change",function(){charger();});
		 	$('nombre_heures_semaine').addEvent("change",function(){charger();});
		}
		else if(service_type == 'ServicePonctuel'){
	 		if($('critere')){
	 			$('critere').addEvent("change",function(){charger();});
	 		}
		 	$('nombre_interventions').addEvent("keyup",function(){
		 		if(this.get('value').length > 0){
					if(myTimer!=null){
				   	myTimer = $clear(myTimer);
					}
		     	myTimer = charger.delay(delay);
		     }
		     });
		 	$('nombre_heures_intervention').addEvent("change",function(){charger();});
		}
		else if(service_type == 'ServiceProduit'){
			var func1 = function(){
				if($('produit1').value!='' && $('quantite1').value !=''
					|| $('produit1').value=='' && $('quantite1').value ==''){
					charger();}};
			$('produit1').addEvent("change",func1);
			$('quantite1').addEvent("keyup",func1);
			var func2 = function(){
				if($('produit2').value!='' && $('quantite2').value !=''
				|| $('produit2').value=='' && $('quantite2').value ==''){charger();}};
			$('produit2').addEvent("change",func2);
			$('quantite2').addEvent("keyup",func2);
			var func3 = function(){
				if($('produit3').value!='' && $('quantite3').value !=''
				|| $('produit3').value=='' && $('quantite3').value ==''){charger();}};
			$('produit3').addEvent("change",func3);
			$('quantite3').addEvent("keyup",func3);
		}
		else if(service_type == 'ServiceNonTarife'){
	 		if($('critere')){
	 			$('critere').addEvent("change",function(){charger();});
	 		}
		}
	}
});



function charger(){
	subCharger(false,false,false);
}

function subCharger(_next,_sort,_order){
	desactiverControles();
	var Params = new Class({
    Implements: Options,
    options:{}
     ,
    getOptions: function(){
        return this.options;
    }

	});

	$('loading').setStyle('display','block');
	var params = new Params();
	if(service_type == 'ServiceRegulier'){
		params.setOptions({'param_ref_service': $('param_ref_service').value,
			'param_ref_ville': $('param_ref_ville').value,
			'nombre_heures_semaine': $('nombre_heures_semaine').value,
			'nombre_mois': $('nombre_mois').value});
		if($('critere')){
			params.setOptions({'param_ref_critere': $('critere').value});
		}
	}

	else if(service_type == 'ServicePonctuel'){
		params.setOptions({'param_ref_service': $('param_ref_service').value,
			 'param_ref_ville': $('param_ref_ville').value,
			 'nombre_interventions': $('nombre_interventions').value,
			 'nombre_heures_intervention': $('nombre_heures_intervention').value});
		if($('critere')){
			params.setOptions({'param_ref_critere': $('critere').value});
		}
	}
	else if(service_type == 'ServiceProduit'){
		params.setOptions({'param_ref_service': $('param_ref_service').value,
			 				'param_ref_ville': $('param_ref_ville').value,
			 				'produit1': $('produit1').value,
							'produit2': $('produit2').value,
							'produit3': $('produit3').value,
							'quantite1': $('quantite1').value,
							'quantite2': $('quantite2').value,
							'quantite3': $('quantite3').value});
	}
	else if(service_type == 'ServiceNonTarife'){
		params.setOptions({'param_ref_service': $('param_ref_service').value,
			 				'param_ref_ville': $('param_ref_ville').value});
		if($('critere')){
			params.setOptions({'param_ref_critere': $('critere').value});
		}
	}

	params.setOptions({'next': _next?_next:next});
	params.setOptions({'sort': _sort?_sort:sort});
	params.setOptions({'order': _order?_order:order});

	var request = new Request.HTML({url: "/ajax/comparaison", onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
		$('div_resultat').set('html',responseHTML);
		next = _next?_next:next;
		sort = _sort?_sort:sort;
		order = _order?_order:order
		// si il y a au moins un resultat
		if($('tableau_comparaison')){
			modifierPagination();
			ajouterTri();
		}
		$('loading').setStyle('display','none');
		activerControles();
	}
	}).get(params.getOptions());

}


// modifier les liens de pagination pour passer en chargement AJAX
function modifierPagination(){
	$each($$('.pager a'),function(lien, index){
		lien.addEvent("click",function(){
			var url = lien.get('href');
			lien.set('href','#');
			if(url != null){
				var reg=new RegExp(".*?next=([0-9]*)", "g");
				var _next = url.replace(reg,"$1");
				subCharger(_next,sort,order);
			}
			else{
				subCharger(1,sort,order);
			}
		});// end func click
	});
}

// ajouter les liens pour le tri
function ajouterTri(){
	$('tri').addEvent("change",function(elem){chargerTri();});
}

function chargerTri(){
	var _sort = $('tri').value;
	if(_sort == 1 || _sort == 2){
		_order = 'desc';
	}
	else{
		_order = 'asc';
	}
	subCharger(next,_sort,_order);
}

/*
// tri que par ordre desc
function subAjouterTriOnlyDesc(elem,number){
	var _sort = number;
	var _order = null;
	if(number == sort){
		return false;
	}
	else{
		_order = 'desc';
		subCharger(next,_sort,_order);
	}
}

// tri que par ordre asc
function subAjouterTriOnlyAsc(elem,number){
	var _sort = number;
	var _order = null;
	if(number == sort){
		return false;
	}
	else{
		_order = 'desc';
		elem.addEvent("click",function(){
			subCharger(next,_sort,_order);
	}
}


/*
// ajouter les liens pour le tri
function ajouterTri(){
	subAjouterTriOnlyDesc($('div_resultat').getElement('#choix_tri .popularite a'),1);
	subAjouterTriDesc($('div_resultat').getElement('#choix_tri .note a'),2);
	if($('div_resultat').getElement('#choix_tri .tarif a')){
		subAjouterTri($('div_resultat').getElement('#choix_tri .tarif a'),3);
	}
}

// tri en commencant par ordre desc
function subAjouterTriDesc(elem,number){
	var _sort = number;
	var _order = null;
	if(number == sort){
		if(order && order == 'desc'){
			_order = 'asc';
			var img = new Element('img').set('src','/templates/images/down.png');
			elem.getParent().grab(img);
		}else{
			_order = 'desc';
			var img = new Element('img').set('src','/templates/images/up.png');
			elem.getParent().grab(img);
		}
	}
	else{
		_order = 'desc';
	}
	elem.addEvent("click",function(){
		subCharger(next,_sort,_order);
	});
}

function subAjouterTri(elem,number){
	var _sort = number;
	var _order = null;
	if(number == sort){
		if(order && order == 'desc'){
			_order = 'asc';
			var img = new Element('img').set('src','/templates/images/down.png');
			elem.getParent().grab(img);
		}else{
			_order = 'desc';
			var img = new Element('img').set('src','/templates/images/up.png');
			elem.getParent().grab(img);
		}
	}
	else{
		_order = 'asc';
	}
	elem.addEvent("click",function(){
		subCharger(next,_sort,_order);
	});
}
*/
// active tous les controles de la page et on place les handlers
function activerControles(){
	if(service_type == 'ServiceRegulier'){
		if($('critere')){
			$('critere').set('disable', 'false');
		}
		$('nombre_heures_semaine').set('disable', 'false');
		$('nombre_mois').set('disable', 'false');
	}
	else if(service_type == 'ServicePonctuel'){
		if($('critere')){
			$('critere').set('disable', 'false');
		}
		$('nombre_heures_intervention').set('disable', 'false');
		$('nombre_interventions').set('disable', 'false');
	}
}

function desactiverControles(){
	if(service_type == 'ServiceRegulier'){
		if($('critere')){
			$('critere').set('disable', 'true');
		}
		$('nombre_heures_semaine').set('disable', 'true');
		$('nombre_mois').set('disable', 'true');
	}
	else if(service_type == 'ServicePonctuel'){
		if($('critere')){
			$('critere').set('disable', 'true');
		}
		$('nombre_heures_intervention').set('disable', 'true');
		$('nombre_interventions').set('disable', 'true');
	}
}