/**
* @name: Style Changer
* @author: Youp Hulsebos
* @company: Factif BV
* @published: 07/12/2010
* @requires: jQuery v.1.4.2 or above
*/
if(typeof jQuery != 'undefined') {
    jQuery(function($) {
        $.fn.extend({
            changestyle: function(options) {
                //settings verwerken
                var settings = $.extend({}, $.fn.changestyle.defaults, options);

                //controlleren of de cookie is geset, en de stylesheet instellen als zodanig
                if(settings.cookie!=false && typeof $.cookie != 'undefined'){
                    SetStyle($.cookie(settings.cookie), settings);
                    SetStyle($.cookie(settings.cookie), settings);
                }
                
                //voor elke geselecteerd element
                return this.each(function() {
                    if($.fn.jquery < '1.4.2') {return;}
                    //Click functie definiëren
                    $(this).click(function(){ SetStyle($(this).attr('href'),settings); SetStyle($(this).attr('href'),settings); return false; });
                });
            }
        });
		
        //Standaard settings
        $.fn.changestyle.defaults = {
            'cookie' : 'change_stylesheet'
        };

        //deze functie set de nieuwe stijl.
        function SetStyle(stylesheet, settings){
            /**
            * Alle Stylesheets links seleteren selecteren
            * Ze moeten een titel hebben gedefineerd
            * Het attribuut rel moet stylesheet hebben
            */
            var $link_stylesheets = $('link[title][rel*=stylesheet]');

            /**
            * Controlleren of de stijlsheet wel bestaat. Door alle geselecteerde stylesheets te filteren.
            */
            var stylesheet_exists = $link_stylesheets.filter(function (index) { return $(this).attr("href") == stylesheet;}).length;
            if(stylesheet_exists==1) {
                debugger;
                /**
                * Huidige actieve stylesheet uitzetten
                * Opgeclickte stylesheet als actief zetten
                */
                $link_stylesheets
                .filter(function (index) {return $(this).attr("rel") == 'stylesheet';})
                .attr('rel','alternate stylesheet')
                .attr('disabled',true);
                
                $link_stylesheets
                .filter(function (index) {return $(this).attr("href") == stylesheet})
                .attr('rel','stylesheet')
                .attr('disabled',false);

                /**
                * Als de cookie plugin beschikbaar is en cookie setting is niet undefined
                **/
                if(settings.cookie!=false && typeof $.cookie != 'undefined') {
                    $.cookie(settings.cookie, stylesheet, { path: '/', expires: 10 });
                }
                return false;
            }
            return true;
        }
    });
}
