;(function($) {
	$.fn.extend({
		interconnexion: function(options) {
			options = $.extend({}, $.interconnexion.defaults, options);
			return this.each(function() {
				new $.interconnexion(this, options);
			});
		},
		interconnexionmulti:function(options) {
			options = $.extend({}, $.interconnexionmulti.defaults, options);
			return this.each(function() {
				new $.interconnexionmulti(this, options);
			});
		}
	});

	$.interconnexion = function(input, options) {

		callback="";
		if (options.callback!="")
			callback = new Array(options.callback);

		$(input).interconnexionmulti(
			{stargets:new Array(options.starget),
			 urls:new Array(options.url),
			 urls_params:new Array(options.url_params),
			 selectedValues:new Array(options.selectedValue),
			 imgLoader:options.imgLoader,
			 callbacks:callback,
			textChoose:options.textChoose});
	};

	$.interconnexionmulti = function(input, options) {

		$(input).change(function()
		{
			// on vide
			//console.log("trigger déclenché");
			for(var i=0;i<options.stargets.length;i++)
			{
				$.effacer(options.stargets[i],options.textChoose);
			}
			var valeur= $(this).val();
			if(options.imgLoader!="")
			{
				for(var i=0;i<options.stargets.length;i++)
				{
					$("#"+options.stargets[i]).after("<img style='margin-left:5px' id='imgloader"+i+"' src='"+options.imgLoader+"' />");
				}
			}
			for(var i=0;i<options.stargets.length;i++)
			{
				var calcul_url=options.urls[i];

				if(options.urls_params[i].length>0)
				{
					for(var j=0;j<options.urls_params[i].length;j++)
					{

						calcul_url += $("#"+options.urls_params[i]).val() + "/"
					}
				}

				calcul_url+=valeur;

				//console.log('url :'+calcul_url);

		  		$.ajax({type: "POST",
		        	url: calcul_url,
		         	dataType: 'xml',
		         	iag:i,
		         	error: function()
		         	{
		         		if(options.imgLoader!="")
							$("#imgloader"+this.iag).remove();
		       		},
		       		success: function(xml)
		       		{
						var sTarget = document.getElementById(options.stargets[this.iag]);
		         		var tElements=xml.getElementsByTagName('element');
		         		if(tElements.length >0)
		         		{
			         		for(var j=0;j<tElements.length;j++)
				         	{
				           		var idss = tElements[j].getElementsByTagName('id').item(0).childNodes[0].nodeValue;
				           		var nom = tElements[j].getElementsByTagName('nom').item(0).childNodes[0].nodeValue;
				           		var opt = new Option(nom,idss);
				           		sTarget.options[sTarget.length] = opt;
			           			if(idss == options.selectedValues[this.iag])
			           			{
			                 		sTarget.selectedIndex= sTarget.length-1;
			                 		options.selectedValues[this.iag]="";
			                 	}
				         	}
				        }
				        if(options.imgLoader!="")
							$("#imgloader"+this.iag).remove();

						// callback
						if(options.callbacks[this.iag]!= undefined && options.callbacks[this.iag]!= "")
						{
							options.callbacks[this.iag].call();
						}
						if($.interconnexionmulti.firstload!="1"){
							//console.log('interconnexionmulti');
							$(sTarget).trigger('change');
						}
						$.interconnexionmulti.firstload="2";
		       		}
		     	});
	    	}
		});
		/*
		if($.interconnexionmulti.firstload=="1") {
			console.log('interconnexionmulti 2');
			//$(input).trigger('change');
		}
		*/

	};
	// effacement des ts les elemenst du select
	$.effacer = function(objID,val)
	{
		var objselect=document.getElementById(objID);
		for ( i= objselect.options.length-1; i>=0; i-- )
		{
			objselect.options[i] = null;
		}

		if(val!="")
		{
  			var opt = new Option(val,"");
  			objselect.options[objselect.length] = opt;
  		}
	}

	// options par defaut
	$.interconnexion.defaults = {
		starget:"",
		url:"",
		url_params:new Array(),
		selectedValue:"",
		imgLoader:"",
		textChoose:"Choose",
		callback:""
	};
	$.interconnexionmulti.defaults = {
		stargets:new Array(),
		urls:new Array(),
		urls_params:new Array(),
		selectedValues:new Array(),
		imgLoader:"",
		textChoose:"Choose",
		callbacks:new Array()
	};
	$.interconnexionmulti.firstload=1;


})(jQuery);

/*

Simple : 1 select modifie 1 autre select

Multi : le select en input modifie x autres select
les x autres select NE SONT PAS interdependants


Parametres :
starget : id du 2ieme select
url : url du script PHP
selectedValue : valeur à sélectionner ds le 2ième js
imgLoader : chemin de l'image qui sera affiché pdt le loading

IDEM Pour interconnexionmulti sauf que ce sont de tableaux, cf ex

Ex Version simple:
$("#element_1").interconnexion({imgLoader:"/extension/sictrm/design/sictrm/images/contenu/ajaxloader.gif",
								selectedValue:"2",
								url:"/suggest/gethameaux/20400/239/iag_directory40_element/element_1/element_2/",
								starget:'element_2',
								textChoose:"Choisissez"});

EX version multi
$("#element_1").interconnexionmulti({imgLoader:"/extension/sictrm/design/sictrm/images/contenu/ajaxloader.gif",
					selectedValues:new Array("12","14"),
					urls:new Array("/suggest/gethameaux/20400/239/iag_directory40_element/element_1/element_2/","/suggest/getadresses/20400/239/iag_directory40_element/element_1/element_3/"),
					stargets:new Array('element_2','element_3')	,
					textChoose:"Choisissez"
					});


Pour interconnecter plusieurs select à la suite (non multi), il suffit de rajouter un appel sur le 2ieme select, ici element 2 dans le callback

$("#element_1").interconnexion({imgLoader:"/extension/sictrm/design/sictrm/images/contenu/ajaxloader.gif",
	selectedValue:"299",
	url:"/suggest/gethameaux/20400/239/iag_directory40_element/element_1/element_2/",
	starget:'element_2',
	textChoose:"Choisissez",
	callback:function()
		{
			// appel ici a l'interconnection
			$("#element_2").interconnexion({imgLoader:"/extension/sictrm/design/sictrm/images/contenu/ajaxloader.gif",
				selectedValue:"80",
				url:"/suggest/gethameaux/20400/239/iag_directory40_element/element_2/element_3/",
				starget:'element_3',
				textChoose:"Choisissez"});
		}		});


*/

