// thansk to http://blog.carefordesign.com/?p=72
// modified by MEve - 04/2011

(function($) {
	$.fn.tabs = function(options) {
		var defaults = {
			prefixtabs:"tab",
			prefixcontent:"content",
			classcontent:"tabscontent",
			tabinit:"1",
			catchget:"tab",
			fadespeed:"normal",
			firstopened: "true"
		},
		opts = $.extend({}, defaults, options);
		// iterate and reformat each matched element
		return this.each(function() {
			var obj = $(this);
			opts.classcontent = "." + opts.classcontent;
			opts.prefixcontent = "#" + opts.prefixcontent;
			function showTab(id){
				// Contre les stress-click
				$(opts.classcontent, obj).stop(true, true);
				var contentvisible = $(opts.classcontent + ":visible", obj);
				if(contentvisible.length > 0) {
					contentvisible.fadeOut(opts.fadespeed, function(){
						fadeincontent(id)
					});
				} else {
					fadeincontent(id)
				}
				$("#" + opts.prefixtabs + '-' + opts.tabinit).removeClass("active").addClass("inactive");
				$("#" + opts.prefixtabs + '-' + id).removeClass("inactive").addClass("active");
				// Update tab courant
				opts.tabinit = id;
			};
			// Fadein du contenu ciblé
			function fadeincontent(id){
				$(opts.prefixcontent+ '-' + id, obj).fadeIn(opts.fadespeed);
			};
			// Click sur les onglets
			$("ul."+opts.prefixtabs+" li", obj)
				.click(function(){
					showTab($(this).attr("id").replace(opts.prefixtabs + '-', ""));
					return false;
				})
				// Hover sur les onglets
				.hover(function(){
					$(this).addClass("hover");
					return false;
				},
				function(){
					$(this).removeClass("hover");
					return false;
				});
			
			// Demande réaffich onglet via GET['tab']
			var tab = getvars(opts.catchget);
			// Demande de réaffichage d'un onglet ? Si oui vérif existence
			// Sinon tabinit est utilisé : Si introuvable = "1" par défaut
			showTab(((tab && $(opts.prefixcontent + tab).length == 1) ? tab : ($(opts.prefixcontent + opts.tabinit).length == 1) ? opts.tabinit : "1"));
		}); // end each
	};
	// Source : http://www.onlineaspect.com
	function getvars(q,s) {
        s = (s) ? s : window.location.search;
        var re = new RegExp('&'+q+'=([^&]*)','i');
        return (s=s.replace(/^\?/,'&').match(re)) ? s=s[1] : s='';
    };
})(jQuery);

