(function($) {
  //
  // plugin modifiant les check box et radio button - Auteur : Di Carmine Fabrizio - Pix-L
  //
  $.fn.custom_form = function(options) {
  	
	if ($.fn.custom_form.size){
		$.fn.custom_form.size = $.fn.custom_form.size + 1;
	}else{
		$.fn.custom_form.size = 1;
	}
	 
 	var num = $.fn.custom_form.size;
	var $this= $(this);
	var taille = $this.size();
	var retour = true;
	
	// on recupere le type du premier element
	var type = $($this[0]).attr("type");
	if (type !="radio" && type !="checkbox") {
		alert("erreur, seul les radio-buton et check-box sont autorises");
		return;
	}
	
	// On verifie que le nom n'appartient a qu'une seule famille (bouton ou case a cocher)
	$(this).each(function(x) {
		test = $($this[x]).attr("type");
		if ( test !=type){
			alert("erreur, vous avez melange des radio-buton et des check-box avec d'autres elements");
			retour =  false;
		}
	})
	if (!retour) return;
	
	// On place les elements en display none pour qu'il ne soit plus visible
	$this.css("display","none");
	
	// recuperation des options pour modifier l'image de fond
	// et  parametrage des options 
	$.fn.custom_form.defaults = {
	   on :'media/radio_on.jpg',
	   off :'media/radio_off.jpg'
	};
	var opts = $.extend({}, $.fn.custom_form.defaults, options);
	
	return this.each(function(x) {
		
		// On rajoute les images avant les elements en testant si les elements sont deja cocher
	  	var option = opts.off;
		var choix = "oui"+num+" non";
		var court =".oui"+num;
		if ($(this).is(":checked")){
			choix ="oui"+num;
			option = opts.on;;
		} 
		
		// Insertion de l'image
		$(this).before("<img class='" + choix +"' src='" + option + "' >");
		
		// Remettre le choix a sa valeur initial, cette valeur est utilise 
		// Dans la fonction click sur l'image
	 	choix = "oui"+num+" non";
		
	 	// Sur la derniere boucle on lie le click sur l'image avec le composant qu'il remplace
		if (taille == x + 1) {
			
			// Fonction pour les boutons radios
			if (type == "radio") {
				
				$(court).click(function(){
					if ($(this).attr("class") != choix) {
						return;
					}
					$(court).addClass("non").attr("src", opts.off);
					$(this).removeClass("non");
					$(this).attr("src", opts.on);
					$(this).next().attr("checked","checked");
				})
			}else{ // Fonction pour les check box
				$(court).click(function(){
					if($(this).next().is(":checked")){
						$(this).addClass("non").attr("src", opts.off);
						$(this).next().removeAttr("checked");
					}else{
						$(this).removeClass("non").attr("src", opts.on);
						$(this).next().attr("checked","checked");
					}
				})
			}
		}

	});
  };
})(jQuery);
