(function($) {

	$.fn.j3ssw = function(options){

		var j3ssw = this;

		var settings = jQuery.extend({
				index:		0,
				status:		false,
				def: 		"j3sswdef",
				off: 		"j3sswoff",
				on: 		"j3sswon",
				callback:	function(selection, id, j3sswobj){}				
				}
		,options||{});

		return this.each(function() {

			var container = $(this);
			var currentstatus = settings.def;
			var defaultradio;
			var radiovalue;
		

		    container.find("label").each( function(){ 
		    	$(this).bind("click",function(e){
			    	var radio = $("#"+$(this).attr("id").substring(4));
			    	radio.attr("checked",true);
					var isRadioSelected = (radiovalue == radio.val());
					defaultradio = container.find(":radio").filter(":checked");
					radiovalue = defaultradio.val();
			    	update(radio);		    	
			    	
					settings.callback(radiovalue, container.attr("id"), j3ssw);			    	
		    	});
		    });			
			
			function update(radio){
				var id = radio.attr("id");
				var isRadioSelected = (radiovalue == radio.val());
				currentstatus = isRadioSelected?settings.on:currentstatus;
				container.find("label").removeClass(settings.on).removeClass(settings.off).removeClass(settings.def);
				container.find("label[id!='for_" + id + "']").addClass(settings.def);
				container.find("label[id='for_" + id + "']").addClass(currentstatus);				
			}
			
			container.find("input").css({"position":"absolute", "top":"-99999px", "left":"-99999px"});
			container.find("label").addClass(settings.def);
			container.find("label").hover(function(){$(this).css("cursor","pointer");},
										  function(){$(this).css("cursor","default");});

			if(container.find(":radio").filter(":checked").length > 0){
				defaultradio = container.find(":radio").filter(":checked");	
			}else{
				defaultradio = container.find(":radio").eq(settings.index).attr("checked", true);
			}

			radiovalue = defaultradio.val();
			update(defaultradio);

		});
	};
})(jQuery);
