( function($) {
	var settings;
	
	jQuery.fn.b2f_reservit = function(options) {
		var self = this;
		
		//var globale expres
		settings = jQuery.extend( {
			 dataType				: 'html'
			, type					: 'get'
			, extraData				: {render_mode:'ajax', form_source:"vel2"}
			, url					: ''
			, port					: "b2fReservit" + this.name 	// try to leverage ajaxQueue plugin to abort previous requests
			, mode					: "sync"						// try to leverage ajaxQueue plugin to abort previous requests
			, htmlReponseContaineur	: '#reservit-listing'
			, documentContaineur	: '#reservit-listing'
			, htmlWaitcontent		: '<img src="/images/ajax-loader.gif" />'
			, refreshOnFirstLoad	: true
			, defaultRespp			: 2 
			, enabled				: true
		}, options);
		
		//le callback sera executé a chaque fois qu'un appel ajax se termine, permet de se synchroniser avec eux
		$(document).b2f_pdm_request_observer('bind', 'b2f_reservit_key', function() {
			checkBindVel2Rerservit();
		});
		$(document).b2f_pdm_request_observer('bind', 'b2f_vel2_key', function() {
			checkBindVel2Rerservit();
		});
		
		$(document).b2f_pdm_request_observer('bind', 'b2f_reservit_key', function() {
			checkIfShowLienMoteurRit();
		});
		$(document).b2f_pdm_request_observer('bind', 'b2f_vel2_key', function() {
			checkIfShowLienMoteurRit();
		});
		
		if ($(settings.documentContaineur).length > 0) {
			$(self).bind('change', function() {
				ajaxRefresh(self);
			});
			if ($(document).data('b2f_reservit_init_ok') == null || !$(settings.documentContaineur).hasClass('not-empty-rit')) {
				$(document).data('b2f_reservit_init_ok', true); // afin de ne plus entrer dedans 
				if (settings.refreshOnFirstLoad) {
					ajaxRefresh(self);
				}
			}
		}
		
	}
	
	
	
	function checkBindVel2Rerservit() {
		
		if ($(document).b2f_pdm_request_observer('successed', 'b2f_reservit_key') && $(document).b2f_pdm_request_observer('successed', 'b2f_vel2_key')) {
			if( ($('.nbResultatVel').text() != "") && ($('.nbResultatReservit').text() != "")){
				$('.nbResultatVel2').text(parseInt($('.nbResultatVel2').text()) + parseInt($('.nbResultatReservit').text()))
			}
			if( ($('.nbResultatVel').text() == "") && ($('.nbResultatReservit').text() != "")){
				$('.nbResultatVel2').text($('.nbResultatReservit').text());
			}
			if( ($('.nbResultatVel').text() !=  "") && ($('.nbResultatReservit').text() == "")){
				$('.nbResultatVel2').text($('.nbResultatVel').text());
			}
		}
	}
	
	
	function checkIfShowLienMoteurRit() {
		
		if ($(document).b2f_pdm_request_observer('successed', 'b2f_reservit_key') && $(document).b2f_pdm_request_observer('successed', 'b2f_vel2_key')) {
			//si rit et vel2 sont termines, alors on peut check leurs etats et savoir l'etat des paginations
			//console.debug('test');
			if ($('.numero-pagination:last').hasClass('pagesresultatsoff')) {
			//console.debug('test2');
				//alors c'est  la derniere page de la vel2.0 attention, verfication dependante de config/Smarty/Templates/pagination/pagination_vel20ajax.tpl
				if ($('#reservit-listing-inner').hasClass('not-last-rit-resultat')) {
				//console.debug('test3');
					//dans ce cas, c'est pas la denriere page de rit, et il faut charger le message vers les resultats du moteur principal
					$('#div-lien-moteur-rit').show('slow');
					
				}
			}//fin de if ($('.pages:last').hasClass('pagesresultatsoff'))
			
			
			//on tente de melanger les flux
			 //mergeListsReservitVel2();
			//fin de on tente de melanger les flux
			
		}
	}
	
	
	
	function ajaxRefresh(form) {
		if ($('#catAjax').val() != '' || settings.enabled == false) {
			$(settings.documentContaineur).empty().removeClass('not-empty-rit');
			return;//si on change d'onglet  on ne fait rien
		}
		
		$(settings.documentContaineur).addClass('not-empty-rit').html(settings.htmlWaitcontent);
		
		var respp = settings.defaultRespp;
		var vel2Respp = (parseInt($('#respp').attr('value'))?parseInt($('#respp').attr('value')):parseInt($('#resultats-par-page').attr('value')));
		
		if (null != vel2Respp && 0 <  parseInt(vel2Respp / 3)) {
			respp = parseInt(vel2Respp / 3)
		}
		
		//on reset tous les binder
		$(document).b2f_pdm_request_observer('triggerReset', 'b2f_reservit_key');
		
		
		
		$.ajax({
			dataType 	: settings.dataType
			, type 		: settings.type
			, data 		: $(form).serialize() + "&" + $.param(settings.extraData) + '&' + $.param({resppIt: respp})
			, url 		: settings.url
			, port 		: settings.port
			, mode 		: settings.mode
			, cache 	: false
			, success 	: function(htmlResponse) {				
				$(settings.documentContaineur).html($(settings.htmlReponseContaineur, htmlResponse).html());
				
				//on declenche un evenement qui dit que cette requete est ok
				$(document).b2f_pdm_request_observer('triggerSuccess', 'b2f_reservit_key');				
			}//fin success
			, error 	: function(htmlResponse) {
				$(settings.documentContaineur).html('erreur');
			}
		});//fin ajax
	}
	
})(jQuery);

function mergeListsReservitVel2() {
	if ( $('#lesResultats').hasClass('refresh-en-cours')) {
		setTimeout("mergeListsReservitVel2()", 100);
	} else {
		var domObjliste = $('#lesResultats > div:has(.unResultat)');
		var domObj 		= null;
		var indexInsert = null;
		
		$('#reservit-listing-inner > div:has(.unResultat)').each(function(index) {
			domObj 		= null;
			indexInsert = 1;
			targetIndex = (parseInt(index) + 1) * 3;
			while (null == domObj && indexInsert <= targetIndex) {
				domObj = $(domObjliste).get(targetIndex - indexInsert);
				
				indexInsert ++;
			}
			if (null != domObj) {
				$(this).insertAfter(domObj);
				//domObjliste = $('#lesResultats > div:has(.unResultat)'); // on met a jours la liste
			}
		});

	}
	
}
