(function($){
	$.fn.sosabaque=function(options){
			var opts=""; 
			var chn_pmpm=""
			var today = new Date();	
			var annee_today = today.getFullYear();
			var annee_ref = today.getFullYear()-100;	
			var test1=0;
			var test2=0;
			var sosa_calc=1; 
			// ---------------------
			var defaults = 
           	{	
				sosa_init: parseInt($("form#form_sosa input:#no_sosa").val()),
				chn_pmpm: $("form#form_sosa input:#chaine_pmpm").val(),
				annee: parseInt($("form#form_sosa input:#annee_ref").val())
			};
			// mélange des paramètres fournis et des paramètres par défaut
        	opts = $.extend(defaults, options);
			// --------------------	
			
			//alert(opts.chaine_pmpm.length);	
			//alert( opts.sosa_init+" - "+opts.chn_pmpm+" - "+opts.annee+" - "+annee_today);  
			
			var deuxpuissi = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32758,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864];
			$(document).ready(function(){	
				test1= opts.chn_pmpm.indexOf("Moi->", 0);	
				if(test1 == -1){
					if(opts.chn_pmpm.length <= 25){
						//alert(opts.chn_pmpm.length);
						for (i=0;i<opts.chn_pmpm.length;i++){
							sosa_calc=sosa_calc*2;
					 		test2= opts.chn_pmpm.indexOf("M", i);	
							if (test2 == i){
								sosa_calc=sosa_calc+1;
							}
						} 
						$("form#form_sosa input:#no_sosa").val(""+sosa_calc+"");
						opts.sosa_init=sosa_calc;
					} else {
					 	alert("Votre chaine de \"PM...\" est trop longue!\nElle doit comporter au maximum 25 caract\350res\nVeuillez SVP corriger votre saisie, Merci."); 
					}
				}
				if (opts.annee >= annee_ref && opts.annee <= annee_today){
					if(	opts.sosa_init < deuxpuissi[26]){ 
						//alert(opts.sosa_init);
						var i=2; 
						var j=0;
						var k=0;
						for (i=2; i<=14; i++) {
							// Initialisation tableau.		  
							$("table#wp-table-reloaded-id-9-no-1 tr:.row-2 td:.column-" + i +"").empty().css("border", "0px");
							$("table#wp-table-reloaded-id-9-no-1 tr:.row-3 td:.column-" + i +"").empty().css("border", "0px");
							$("table#wp-table-reloaded-id-9-no-1 tr:.row-4 td:.column-" + i +"").empty().css("background-color", "#fff");
							$("table#wp-table-reloaded-id-9-no-1 tr:.row-7 td:.column-" + i +"").empty().css("border", "0px");
							$("table#wp-table-reloaded-id-9-no-1 tr:.row-8 td:.column-" + i +"").empty().css("border", "0px");
							$("table#wp-table-reloaded-id-9-no-1 tr:.row-9 td:.column-" + i +"").empty().css("background-color", "#fff");  
							// 	Habillage du "Cujus = 1".
							if (i==2){	
								$("table#wp-table-reloaded-id-9-no-1 tr:.row-2 td:.column-2").css("border", "3px solid #f00"); 
								$("table#wp-table-reloaded-id-9-no-1 tr:.row-3 td:.column-2").append("<strong>1</strong>").css("border", "3px solid #f00"); 
								$("table#wp-table-reloaded-id-9-no-1 tr:.row-4 td:.column-2").css("background-color", "#f00").append("Moi");
							}	
							//	Calcul des années supposées	et positionnement du "Sosa initial.
							$("table#wp-table-reloaded-id-9-no-1 tr:.row-2 td:.column-" + i +"").append("<strong>" + (opts.annee - 30*(i-2)) + "</strong>");
							$("table#wp-table-reloaded-id-9-no-1 tr:.row-7 td:.column-" + i +"").append("<strong>" + (opts.annee - 330 - 30*i) + "</strong>");	
							if(	opts.sosa_init > 1){
								// Test sur le groupe du haut du tableau.
								if((opts.sosa_init >= deuxpuissi[i-2])&&(opts.sosa_init < deuxpuissi[i-1])){
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-3 td:.column-" + i +"").append("" + opts.sosa_init + "").css("border", "3px solid #f00");	
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-2 td:.column-" + i +"").css("border", "3px solid #f00");	 
									if (opts.sosa_init/2 == Math.round(opts.sosa_init/2)){		 
										$("table#wp-table-reloaded-id-9-no-1 tr:.row-4 td:.column-" + i +"").append("P&#232;re").css("background-color", "#65b9ff");
										chn_pmpm= "P" + chn_pmpm; 
									}else{
										$("table#wp-table-reloaded-id-9-no-1 tr:.row-4 td:.column-" + i +"").append("M&#232;re").css("background-color", "#ffb6c1");
										chn_pmpm= "M" + chn_pmpm;
									}
									j=i-1;
								}
								// Test sur le groupe du bas du tableau.
								if((opts.sosa_init >= parseInt(deuxpuissi[i+11]))&&(opts.sosa_init < parseInt(deuxpuissi[i+12]))){ 
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-8 td:.column-" + i +"").append("" + opts.sosa_init + "").css("border", "3px solid #f00");	
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-7 td:.column-" + i +"").css("border", "3px solid #f00");
									if (opts.sosa_init/2 == Math.round(opts.sosa_init/2)){
										$("table#wp-table-reloaded-id-9-no-1 tr:.row-9 td:.column-" + i +"").append("P&#232;re").css("background-color", "#65b9ff");
										chn_pmpm= "P" + chn_pmpm; 
									}else{
										$("table#wp-table-reloaded-id-9-no-1 tr:.row-9 td:.column-" + i +"").append("M&#232;re").css("background-color", "#ffb6c1");
										chn_pmpm= "M" + chn_pmpm;	
									}
									k=i;
									j=14;
								}
							}
						}
						if( opts.sosa_init > 1){
							// Calcul des Sosas intermédiaires et du genre de l'ancêtre
							sosa_interm = parseInt(opts.sosa_init/2);
							// Groupe de "Sosas" du bas du tableau	
							for (i=k-1; i>1; i--){ 
								$("table#wp-table-reloaded-id-9-no-1 tr:.row-8 td:.column-" + i +"").append("" + sosa_interm + ""); 
								// Si le Sosa intermédiaire est "pair" alors le libellé est "P&#232;re" sinon c'est "M&#232;re"	  
								if (sosa_interm/2 == Math.round(sosa_interm/2)){
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-9 td:.column-" + i +"").append("P&#232;re");
									chn_pmpm= "P" + chn_pmpm; 
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-9 td:.column-" + i +"").css("background-color", "#65b9ff");	
								}else{
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-9 td:.column-" + i +"").append("M&#232;re");	
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-9 td:.column-" + i +"").css("background-color", "#ffb6c1");	
									chn_pmpm= "M" + chn_pmpm; 
								}
								sosa_interm = parseInt(sosa_interm/2);
							} 
							// Groupe de "Sosas" du haut du tableau
							for (i=j; i>1; i--){ 
								if(i > 2){
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-3 td:.column-" + i +"").append("" + sosa_interm + "");
								}	
								if ((i > 2) && (sosa_interm/2 == Math.round(sosa_interm/2))){
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-4 td:.column-" + i +"").append("P&#232;re"); 
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-4 td:.column-" + i +"").css("background-color", "#65b9ff");
									chn_pmpm= "P" + chn_pmpm; 	
								}else if (i > 2){
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-4 td:.column-" + i +"").append("M&#232;re"); 
									$("table#wp-table-reloaded-id-9-no-1 tr:.row-4 td:.column-" + i +"").css("background-color", "#ffb6c1");	
									chn_pmpm= "M" + chn_pmpm; 
								}
								sosa_interm = parseInt(sosa_interm/2);
							} 
						}
						chn_pmpm= "Moi->" + chn_pmpm;
						//alert(chn_pmpm);
						$("form#form_sosa input:#chaine_pmpm").val(""+chn_pmpm+""); 
						
					}else{
						 alert("votre saisie n'est pas correcte!\nLa valeur maximum de No de Sosa autoris\351 par ce programme est de "+ (deuxpuissi[26]-1) +"\nVeuillez la modifier SVP.");
					}
				}else{
					 alert("Veuillez saisir une ann\351e de r\351f\351rence correcte, correspondant au Sosa No1, Merci.");
				}
			});
    };
})(jQuery);	

