// vim: et:ts=4:sw=4:sts=4:ft=js

/*@
Ox.Theme <f> get/set theme
    ()      -> <s>  Get current theme
    (theme) -> <s>  Set current theme
    theme <s>   name of theme
    > Ox.Theme()
    'classic'
    > Ox.Theme('modern')
    'modern'
@*/

Ox.Theme = function(theme) {

    return theme ? setTheme(theme) : getTheme();

    function getTheme() {
        var theme = '';
        Ox.forEach(Ox.UI.$body.attr('class').split(' '), function(className) {
            if (Ox.startsWith(className, 'OxTheme')) {
                theme = className.replace('OxTheme', '').toLowerCase();
                return false;
            }
        });
        return theme;
    }

    function setTheme(theme) {
        var currentTheme = getTheme();
        if (theme != currentTheme) {
            Ox.UI.$body
                .addClass('OxTheme' + Ox.toTitleCase(theme))
                .removeClass('OxTheme' + Ox.toTitleCase(currentTheme));
            $('img:not(.OxVideo)').add('input[type=image]:not(.OxVideo)').each(function() {
                var $this = $(this);
                $this.attr({
                    src: $this.attr('src').replace(
                        '/Ox.UI/themes/' + currentTheme + '/',
                        '/Ox.UI/themes/' + theme + '/'
                    )
                });
            });
        }
        return theme;
    }

};

/*
Ox.UI.ready(function() {
    
    Ox.theme = function() {
        var length = arguments.length,
            classes = Ox.UI.$body.attr('class').split(' '),
            arg, theme;
        Ox.forEach(classes, function(v) {
            if (Ox.startsWith(v, 'OxTheme')) {
                theme = v.replace('OxTheme', '').toLowerCase();
                if (length == 1) {
                    Ox.UI.$body.removeClass(v);
                }
                return false;
            }
        });
        if (length == 1) {
            arg = arguments[0]
            Ox.UI.$body.addClass('OxTheme' + Ox.toTitleCase(arg));
            if (theme) {
                $('img').each(function() {
                    var $this = $(this);
                    if (!$this.attr('src')) return; // fixme: remove, should't be neccessary
                    $this.attr({
                        src: $this.attr('src').replace(
                            '/ox.ui.' + theme + '/', '/ox.ui.' + arg + '/'
                        )
                    });
                });
                $('input[type=image]').each(function() {
                    var $this = $(this);
                    $this.attr({
                        src: $this.attr('src').replace(
                            '/ox.ui.' + theme + '/', '/ox.ui.' + arg + '/'
                        )
                    });
                });
                $('.OxLoadingIcon').each(function() {
                    var $this = $(this);
                    $this.attr({
                        src: $this.attr('src').replace(
                            '/ox.ui.' + theme + '/', '/ox.ui.' + arg + '/'
                        )
                    });
                })
            }
        }
        return theme;
    };

    Ox.theme(Ox.UI.DEFAULT_THEME);


});
*/
