( function($) {
	var settings;
	
	jQuery.fn.b2f_ctoutvert = function(options) {
		//var globale expres
		settings = jQuery.extend( {
			 dataType				: 'html'
			, type					: 'get'
			, extraData				: {render_mode:'ajax', form_source:"vel2"}
			, url					: ''
			, port					: "b2fCtoutvert" + this.name 	// try to leverage ajaxQueue plugin to abort previous requests
			, mode					: "sync"						// try to leverage ajaxQueue plugin to abort previous requests
			, htmlReponseContaineur	: '#liste'
			, documentContaineur	: '#ctouvert-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_ctouvert_key', function() {
			checkIfShowLienMoteurCtouvert()
		});
		$(document).b2f_pdm_request_observer('bind', 'b2f_vel2_key', function() {
			checkIfShowLienMoteurCtouvert()
		});
		
		if ($(settings.documentContaineur).length > 0) {
			$(this).bind('change', function() {
				ajaxRefresh(this);
			});
			if ($(document).data('b2f_ctoutvert_init_ok') == null || !$(settings.documentContaineur).hasClass('not-empty-ctouvert')) {
				$(document).data('b2f_ctoutvert_init_ok', true); // afin de ne plus entrer dedans 
				if (settings.refreshOnFirstLoad) {
					ajaxRefresh(this);
				}
			}
		}
		
	}
	

	function checkIfShowLienMoteurCtouvert() {
		
		if ($(document).b2f_pdm_request_observer('successed', 'b2f_ctouvert_key') && $(document).b2f_pdm_request_observer('successed', 'b2f_vel2_key')) {
			
			//si ctouvert et vel2 sont termines, alors on peut check leurs etats et savoir l'etat des paginations
			if ($('.numero-pagination:last').hasClass('pagesresultatsoff')) {				
				//alors c'est  la derniere page de la vel2.0 attention, verfication dependante de config/Smarty/Templates/pagination/pagination_vel20ajax.tpl
				if ($('#ctouvert-listing-inner').hasClass('not-last-ctouvert-resultat')) {					
					//dans ce cas, c'est pas la denriere page de ctouvert, et il faut charger le message vers les resultats du moteur principal
					$('#div-lien-moteur-ctouvert').show('slow');
					
				}
			}//fin de if ($('.pages:last').hasClass('pagesresultatsoff'))
		}
	}
	
	function ajaxRefresh(form) {
		if ($('#catAjax').val() != '' || settings.enabled == false) {
			$(settings.documentContaineur).empty().removeClass('not-empty-ctouvert');
			return;//si on change d'onglet  on ne fait rien
		}
		
		$(settings.documentContaineur).addClass('not-empty-ctouvert').html(settings.htmlWaitcontent);
		
		var respp = settings.defaultRespp;
		var vel2Respp = (parseInt($('#respp').attr('value'))?parseInt($('#respp').attr('value')):parseInt($('#resultats-par-page').attr('value')));
		//var vel2Respp = 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_ctouvert_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_ctouvert_key');				
			}//fin success
			, error 	: function(htmlResponse) {
				$(settings.documentContaineur).html('erreur');
			}
		});//fin ajax
	}
	
})(jQuery);