// V2 : 29/03/03 : ne plus demaner la nationalité du

// ajoute ou enlève le gif de loading ajax
var IS_LOADING = false;
function ajax_loader( mode )
{
	if( mode != -1 && $('#ajaxloader').length == 0 ){
		$(".moteur_rh").prepend('<img id="ajaxloader" src="assets/snippets/offresrh/html/img/ajax-loader.gif" style="float: right;"/>');
		IS_LOADING = true;
	}
	else if( mode != 1 && $('#ajaxloader').length == 1 ){
		$('#ajaxloader').remove();
		IS_LOADING = false;
	}
}



// Récupère les valeurs des fonctions et des options dans le formulaire
// et envoie une requète ajax pour récupérer le tableau d'offres
function rafraichir_offres( force_refresh )
{
	//console.log("rafraichir_offres INIT");
	
	var lang = $("input[name=lang]").val();
	var univers = $("input:checked[name=univers]").val();
	var script = $("input[name=ajax_url]").val();
	var fonctions = '';
	var options = '';
	
	if( $("#fonctions").val() ){
		var fonctions_t = $("#fonctions").val();
		for( var i = 0; i < fonctions_t.length; i++ ){
			fonctions+= "&fonctions[]="+encodeURIComponent(fonctions_t[i]);
		}
	}
	// Si on vient de déselectionner une option, on force le rafraichissement des offres
	else if( force_refresh ){
		fonctions+= "&fonctions[]=-1";
	}
	else
		return;

	if( $("#options").val() ){
		var options_t = $("#options").val();
		for( var i = 0; i < options_t.length; i++ ){
			options+= "&options[]="+encodeURIComponent(options_t[i]);
		}
	}

	var url = script+"?ajax=1&data=offres&lang="+lang+"&univers="+encodeURIComponent(univers)+fonctions+options;
	

	ajax_loader(1);

	$.get(url, function(data){
		//OKconsole.log("OFFRES URL : " + url );
		//console.log("data 1", data);
		if( window.location.href.indexOf('?id=') > -1 ){
			var pos = window.location.href.indexOf('?id=') +4
			var id = parseInt(window.location.href.substring(pos));
		
			data = data.replace(/{£ACTION}/g, window.location.pathname+'?id='+id+'&amp;');
		}
		else
			data = data.replace(/{£ACTION}/g, window.location.pathname+'?');
		//alert("je remplace £action par "+window.location.href );
		//console.log("data 2", data);
		
		
	
		if( $("#moteur_res").length )
			$("#moteur_res").remove();
		if( $("#moteur_infos").length )
			$("#moteur_infos").remove();
		if( $("p.moreAbout").length)
			$("p.moreAbout").remove();

		$("form#moteur").after(data);

		$("#moteur_res").tablesorter({
			cssDesc : 'up',
			cssAsc : 'down',
			cssHeader : '',
			widgets: ['zebra'],
			sortList: [[0,0]]
		});

		make_tr_clickable();
		
		ajax_loader(-1);
	});
}


// Effectue une requete ajax pour récupérer les fonctions d'un univers ('terre' ou 'mer').
// Récupère du code HTML sous forme d'options
function rafraichir_fonctions( univers )
{
	//console.log( "rafraichir_fonctions INIT" );

	var lang = $("input[name=lang]").val();
	var script = $("input[name=ajax_url]").val();

	var url = script+"?ajax=1&data=fonctions&lang="+lang+"&univers="+encodeURIComponent(univers);


	ajax_loader(1);
	$.get(url, function(data){
		//OKconsole.log("FONCTIONS URL : " + url );

		var fonctions = data.split("||");
		var html = '';
		var optclass = '';
		
		// On doit laisser cochées les options qui l'étaient
		var opt_t = new Array();

		for( var i = 0; i < fonctions.length; i++ ){

			opt_t[i] = $(document.createElement('OPTION'))
				.text(fonctions[i])
				.attr("value", fonctions[i]);
				
			$("#fonctions :selected").each(function(j, opt){
				if( $(opt).text() == fonctions[i] ){
					opt_t[i].attr("selected","selected");
					opt_t[i].selected = true;
				}
			});
		}
		
		$('#fonctions').empty();
		for( var i = 0; i < opt_t.length; i++ ){
			$('#fonctions').append(opt_t[i]);
		}

		rafraichir_options(univers);
		//OKconsole.log("rafraichir_fonctions => rafraichir_offres");
		rafraichir_offres();

		$('#fonctions').multipleselect()

		ajax_loader(-1);
	});
}

function rafraichir_options( univers ){

	//console.log('rafraichir_options INIT');

	var lang = $("input[name=lang]").val();
	var univers = $("input:checked[name=univers]").val();
	var script = $("input[name=ajax_url]").val();

	// Un univers a-t-il été selectionné ?
	if( !univers && $("#fonctions").val() ){
		//console.log( "aucun univers spécifié. Récupération de l'univers.");
		var fonctions = '';
		var fonctions_t = $("#fonctions").val();
		for( var i = 0; i < fonctions_t.length; i++ ){
			fonctions+= "&fonctions[]="+encodeURIComponent(fonctions_t[i]);
		}
	
		var url = script+"?ajax=1&data=univers&lang="+lang+fonctions;
	
		$.get(url, function(data){
			//console.log( "rafraichir_options : univers de la fonction "+fonctions+" = "+data);
			check_univers(data);
			rafraichir_fonctions(data);
		});
		return;
	}

	// Le select existe pas ? on le créé
	if( $("#options").length == 0 ){
		//console.log("select des options existe pas !");
		$("fieldset.filtre").eq(1)
			.append('<h4>'+titre+'</h4>')
			.append('<select name="options[]" id="options" multiple="multiple"></select>');
	}

	if( lang == 'fr' ){
		if( univers == 'mer' )
			var titre = 'Brevet';
		else
			var titre = 'Zone géographique';
	}
	else{
		if( univers == 'mer' )
			var titre = 'Certificate';
		else
			var titre = 'Geographic zone';
	}

	$("fieldset.filtre h4").eq(1).text(titre);

	var url = script+"?ajax=1&data=options&lang="+lang+"&univers="+encodeURIComponent(univers);

	var vals = $("#fonctions").val();

	if( vals ){
		for( var i = 0; i < vals.length; i++ ){
			url += '&fonctions[]='+encodeURIComponent(vals[i]);
		}
	}


	ajax_loader(1);
	$.get(url, function(data){
		//OKconsole.log("OPTIONS URL : " + url );

		var options = data.split("||");
		var html = '';
		var optclass = '';
		
		for( var i = 0; i < options.length; i++ ){

			html+= '<option value="'+options[i]+'">'+options[i]+'</option>';
		}
		$('#options').empty();
		$('#options').html(html)
		$('#options').multipleselect();
		ajax_loader(-1);
	});

	$("#options").live("change",rafraichir_offres);

/*
	$("#options").bind("change",function(){
		$("#options").unbind("change");
		$("#options").bind("change", );
		rafraichir_offres();
	});
*/
}


function rafraichir_nationalites( )
{
	//console.log("rafraichir_nationalites INIT");

	var univers = $("input:checked[name=univers]").val();

	// Si le code html du fieldset nationalite est pas présent, ou s'il est présent mais
	// que la nationalitee est pas choisie, on affiche le popup.
	if( $("fieldset.nationalite").length == 0 || ( $("#nationalite").length && $("#nationalite").val().length == 0 ) ){
		//console.log("rafraichir_nationalites : Je fais popper nationalites", $("fieldset.nationalite").length, $("#nationalite").val());
		pop_nationalite();
	}
	else
		rafraichir_fonctions(univers);
}


function pop_nationalite( content )
{
	//console.log( "pop_nationalite INIT ");

	var lang = $("input[name=lang]").val();
	var script = $("input[name=ajax_url]").val();
	var url = script+"?ajax=1&data=nationalites&lang="+lang;

	// Si aucun content transmis et que le HTML de la zone n'est pas présent dans la page
	// on le récupére et on rappelle la fonction en lui transférant le contenu à afficher
	if( !content && $("fieldset.nationalite").length == 0 ){
		//console.log("pop_nationalite : cas 1");
		ajax_loader(1);
		$.get(url, function(data){
			//console.log("pop_nationalite URL : "+ url);
			pop_nationalite(data);
			ajax_loader(-1);
		});
		return false;
	}
	else if( content ){
		//console.log("pop_nationalite : cas 2");
		content = $(content).html();
	}
	else{
		//console.log("pop_nationalite : cas 3");
		content = $('#moteur fieldset.nationalite').html();
	}


	Shadowbox.open({
		player:     'html',
		title:      '',
		content:    content,
		height:     280,
		width:      680,
		options: {
			players: ["html"],
			modal: false,
			listenOverlay:false,
			enableKeys: false,
			animate: false,
			animateFade: false,
			beforeClose: set_nationalite
		}
	});
	return false;
}

function set_nationalite( )
{
	//console.log("set_nationalite INIT");

	var lang = $("input[name=lang]").val();
	var script = $("input[name=ajax_url]").val();

	var content = $("#sb-content");
	var val = $("#sb-content select :selected").val();
	var option = $("#sb-content select :selected").text();

	//console.log("val = "+ val);

	if( val == '' || !val ){
		alert("Veuillez choisir une nationalité");
		return false;
	}

	var url = script+"?ajax=1&data=votre_nationalite&lang="+lang+"&nationalite="+val;

	ajax_loader(1);
	$.get(url, function(data){
		//console.log("set_nationalite URL : "+ url);
		
		if( $("form#moteur #nationalite_info").length )
			$("form#moteur #nationalite_info").remove();

		if( $("form#moteur fieldset.nationalite").length )
			$("form#moteur fieldset.nationalite").remove();
		
		$("form#moteur")
			.append(data)
			.append('<fieldset class="nationalite">' + $(content).html() + '</fieldset>');
		$("select[name=nationalite] option:contains("+option+")").attr("selected", "selected");
		$('fieldset.nationalite').hide();
		
		rafraichir_fonctions("mer");
	});
	
	return true;
	
}

function init_univers()
{

	// On cache le submit
	$("#submit").remove();

	$('#moteur fieldset.nationalite').hide();

	if( $("input[name=univers]:checked").val() )
		check_univers( $("input[name=univers]:checked").val() );
	else{
		$('#moteur fieldset.univers #p_mer').bind( "click", function(){
			if( IS_LOADING ) return false;
			check_univers( 'mer' );
		});
		$('#moteur fieldset.univers #p_terre').bind("click", function(){
			if( IS_LOADING ) return false;
			check_univers('terre');
		});
		$('#fonctions').multipleselect();
	}

	$("#sb-content .button input").live("click", function(){
		if( IS_LOADING ) return false;
		Shadowbox.close();
	});

	$('#moteur fieldset.univers input').css("visibility","hidden");

	$('#moteur fieldset.univers #p_mer,#moteur fieldset.univers #p_terre,#moteur fieldset.univers label').hover(
      function () { $(this).css("cursor","pointer"); }
    );

	$('#moteur fieldset.univers .universbloc').eq(0).after('<div class="verthr"> </div>');


}


$(document).ready(function () {
	init_univers();
	
	$("#moteur_res").tablesorter({
		cssDesc : 'up',
		cssAsc : 'down',
		cssHeader : '',
		widgets: ['zebra'],
		sortList: [[0,0]]
	});

	make_tr_clickable();
	
	$('#fonctions').live("change",function(){
		//console.log ("#fonctions vien de changer");
		rafraichir_options();
		//OKconsole.log("#fonctions change => rafraichir_offres");
		rafraichir_offres( true );
	});

	//$("#fonctions").multipleselect();
});


function check_univers( univers )
{
	//console.log( 'check_univers INIT : ' + univers );
	
	$("#moteur_res,#moteur_infos,p.moreAbout").remove();

	var univers_bis = "terre";
	if( univers == "terre" )
		univers_bis = "mer";

	$('#moteur fieldset.univers #p_'+univers)
		.unbind("click")
		.fadeTo("fast", 1)
		.find('input').attr("checked","checked")
		.parent().prev('label').css("visibility", "visible");

	$('#moteur fieldset.univers #p_'+univers_bis)
		.bind("click", function(){
			if( IS_LOADING ) return false;
			check_univers( univers_bis );
		})
		.bind( "mouseover", function (){ $(this).css("cursor","pointer") })
		.fadeTo("fast", 0.33)
		.find('input').attr("checked","")
		.parent().prev('label').css("visibility", "hidden");

	$("#nationalite_info").hide();
	rafraichir_fonctions( univers );

}

// A appeler pour créer/mettre à jour les éléments d'une liste d'après un select
jQuery.fn.multipleselect = function(options){
	//console.log("multipleselect INIT");
	/* Default settings */
	var settings = {
	};
	
	/* Processing settings */
	settings = jQuery.extend(settings, options || {});
	/* Wrapping all passed elements */
	return this.each(function() {

		//console.log("multipleselect : je refais "+this.id );

		var $select = $(this);
		var $ul;
		
		if( $select.attr("id").length == 0 )
			$select.attr("id", "sel_" + (Math.floor( Math.random ( ) * 101 ) )) ;
		
		// On ne recree pas la liste si elle existe pas
		if( !$("#ul_"+$select.attr("id")).length ){
			//console.log("Je créé le UL "+"#ul_"+$select.attr("id"));
			$ul = $(document.createElement('UL')).addClass("select").attr("id", "ul_"+$select.attr("id") );
		}
		else{
			//console.log("UL #ul_"+$select.attr("id")+" existe déjà ( "+$("#ul_"+$select.attr("id")).children().length+" éléments)");
			$ul = $("#ul_"+$select.attr("id"));
			$ul.empty();
			//console.log("Je le vide... Il reste "+$ul.children().length+" éléments");
		}
		
		
		$select.children().each(function(i, option){
			//console.log("multipleselect option : ", $(option).text());
			
			var $li = $(document.createElement('LI')).text($(option).text())
			.hover(
				function(){ $(this).addClass("hover") },
				function(){ $(this).removeClass("hover") }
			)
			.bind("click", function(e){
				if( IS_LOADING ) return false;
				if( $(this).hasClass("selected") ){
					$(this).removeClass("selected");
					$(option).attr("selected", "")
					option.selected = false;
				}
				else{
					$(this).addClass("selected");
					$(option).attr("selected", "selected");
					option.selected = true;
				}
				//console.log("Activation de onChange sur #"+$select.attr("id")+". opt : ", $(option).text() );
				$select.trigger("change");
				e.preventDefault();
				return false;
			});
			if( option.selected || $(option).attr("selected") == "selected" )
				$li.addClass("selected");

			$ul.append($li);

		});

		if( !$("#ul_"+$select.attr("id")).length ){
			//console.log("je cache "+$select.attr("id"));
			$select.css({position:"absolute", top: "-9999px"}).before($ul);
		}
	});
}

function make_tr_clickable()
{
	trs = $("#moteur_res tr");
	for( var i = 0; i < trs.length; i++ ){
		if( i == 0 )
			continue;
		$(trs[i]).hover(
			function(){ $(this).addClass("hover") },
			function(){ $(this).removeClass("hover") }
		)
		.click(function(){
			//alert("location 1 : "+$(this).find("a").eq(0).attr("href") );
			//alert("ori : "+window.location.href);
			window.location.href = $(this).find("a").eq(0).attr("href");
			return false;
		});
		if( i+1 == trs.length ){
			$(trs[i]).find("td").css("border-bottom","1px solid #D5D3C2");
		}
	}
}
