The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
/* //////////////////////////////////////////////////////////////////////////////////////////////////////
///// Code mixing by Molokoloco ..... 2011 ......... [EVER IN PROGRESS (it's not done yet)] ////////////
//////////////////////////////////////////////////////////////////////////////////////////////////// */
/*
	// Add Or Switch Stylesheet
	
		// Ressources :
			* Source here : http://home.b2bweb.fr/js/jquery.style.js
			* Official : http://plugins.jquery.com/project/AddOrSwitchStylesheet
			* Use cookie manager from : http://plugins.jquery.com/project/cookie 
			
		// Plugin who load (at the first demand) and switch stylesheet, with cookie :
			* Manage links to change style
			* Add stylesheet to head, if not exist
			* If already exist, switch style with the disabled attribute
			* Prevent changing styles who are not related to theme : No modification on styles without id attribute
			* Prevent changing other styles who are not related to theme
			* Stock and autoload user style preference, with a cookie 
	
		// HTML
	
			<head>
				 <link rel="stylesheet" type="text/css" media="all" href="css/styles.css" id="themeDefault"/>
			</head>
			<body>
				 <ul>
					  <li><a href="javascript:void(0);" rel="css/styles.css" class="css">Original</a></li>
					  <li><a href="javascript:void(0);" rel="css/style_light.css" class="css">Blanc</a></li>
					  <li><a href="javascript:void(0);" rel="css/style_dark.css" class="css">Sombre</a></li>
				 </ul>
			</body>
		
		// JS USE CASE
		
			$('a.css').styleInit(); // That all ! Wait user click...
			$.fn.styleSwitch('css/styles.css'); // Direct style change with JS call
*/

(function($){
     $.fn.extend({
          styleDisable: function (disabled) {
               setTimeout(function () {
                    $(disabled).each(function () {
                         $(this).attr('disabled', 'disabled');
                    });
               }, 250);
          },
          styleLoad: function (stylePath) {
               $('head').append('<link rel="stylesheet" type="text/css" href="' + stylePath + '" id="theme' + Math.random() + '"/>');
          },
          styleSwitch: function (stylePath) {
               var exist = false;
               var disabled = [];
               $('link[@rel*=style][id]').each(function () {
                    if (stylePath == $(this).attr('href')) {
                         $(this).removeAttr('disabled');
                         exist = true;
                    }
                    else disabled.push(this);
               });
               if (exist == false) $.fn.styleLoad(stylePath);
               $.fn.styleDisable(disabled);
               $.cookie('css', stylePath, {
                    expires: 365,
                    path: '/'
               });
          },
          styleInit: function () {
               if ($.cookie('css')) {
                    var isSet = false;
                    $('link[rel*=style][id]').each(function () {
                         if ($.cookie('css') == $(this).attr('href')) isSet = true;
                    });
                    if (isSet == false) $.fn.styleSwitch($.cookie('css'));
               }
               return $(this).click(function (event) {
                    event.preventDefault();
                    $.fn.styleSwitch($(this).attr('rel'));
                    $(this).blur();
               });
          }
     });
})(jQuery);